- 浏览: 213970 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (107)
- java网络通信(rmi,hessian,nio...) (4)
- java基础 (25)
- java压缩和解压缩 (1)
- 开发框架整合 (7)
- struts2.0 (3)
- 构建工具(ant,maven..) (1)
- web容器配置(tomcat,weblogic,nginx...) (3)
- hibernate (8)
- 业务(项目管理,项目设计相关) (5)
- 数据库(oracle,mysql..) (7)
- linux命令 (6)
- java网络通信(rmi (6)
- hessian (6)
- nio...) (6)
- 数据库(oracle (4)
- mysql..) (4)
- ibatis (2)
- 多线程 (1)
- Windows Install Clean Up 卸载JDK (1)
- IETEST (1)
- UML 类图 关系 (1)
- java基础 spring (2)
- NFS SFU (1)
- jmap mat jps (1)
- 架构 (1)
- 统一管理 (0)
- 项目管理 (1)
- 图片预加载 (1)
- 代码高亮 (1)
- 同步 (1)
- 权限管理 (0)
- ehcache ibatis (1)
- jd-gui proguard (1)
- portmon (1)
- procexp (1)
- mysql (1)
- NIO 内存映射文件 (1)
- web容器配置(tomcat (1)
- weblogic (1)
- nginx...) (1)
- WEB (1)
- html (1)
- javascript (1)
- iOS pods (1)
最新评论
-
vrbvillor:
我的QQ是245614005。如果您可以帮我的话,请发邮件或联 ...
mysql存储过程中使用动态SQL,并且返回值 -
vrbvillor:
大侠,请教一个问题。我想在mysql的function里边 ...
mysql存储过程中使用动态SQL,并且返回值 -
newslxw:
ppgunjack 写道关键要弄清楚,UAT用例是谁提供,谁评 ...
做到客户满意为止(项目成本控制相关主题) -
萧十一狼:
所有dao类都继承com.ibatis.sqlmap.clie ...
spring+ibatis整合方法 -
adss101:
一般项目就这块比较难控制,,弄不好就死在这了,,客户要求,对于 ...
做到客户满意为止(项目成本控制相关主题)
打包成JAR后的配置文件读取方式和没打包的不一样,
为了兼容两种模式,
1、spring配置文件中引用属性文件方法
用file:**让spring去查找文件
2、手工读取spring配置文件的方法,如SpringUtils中
3、读取文件时应该区分文件在jar中还是jar的同级目录中,如图片等,一般是不打包到jar中,这么读取文件
4、读取图片的方法
jar中时使用相对路径读取,路径不能以/开头,且不能用getResource,方法如下
5、保存文件时,使用绝对路径,绝对路径获取方式
为了兼容两种模式,
1、spring配置文件中引用属性文件方法
bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> <property name="locations"> <list> <value>file:**/config/pos_jdbc.properties</value> </list> </property> </bean>
用file:**让spring去查找文件
2、手工读取spring配置文件的方法,如SpringUtils中
private static ApplicationContext ctx = new ClassPathXmlApplicationContext("classpath*:config/applicationContext_Pos.xml");
3、读取文件时应该区分文件在jar中还是jar的同级目录中,如图片等,一般是不打包到jar中,这么读取文件
/** * 获取项目的文件的输入流,如果项目在jar中,则先在jar中查找文件,找不到再到jar外面查找文件 * @param filePath * @return * @throws IOException */ public static InputStream getProjectFile(String filePath) throws IOException { InputStream in = null; String currentJarPath = URLDecoder.decode(Constants.class .getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8"); // 获取当前Jar文件名 String path = Constants.class.getResource("").getPath(); if (path.indexOf("!") != -1) {// 在jar中 logger.info(filePath + " is in jar"); JarFile currentJar = new JarFile(currentJarPath); JarEntry dbEntry = currentJar.getJarEntry(filePath); if (dbEntry != null) in = currentJar.getInputStream(dbEntry); } if (in == null) { // String loaderPath = // Thread.currentThread().getContextClassLoader().getResource("").getPath(); logger.info(filePath + " is not in jar"); String loaderPath = currentJarPath; String packPath = Constants.class.getPackage().toString(); packPath = packPath.replace("package ", ""); packPath = "/" + packPath.replace(".", "/"); if (!loaderPath.endsWith("/")) loaderPath = loaderPath.substring(0, loaderPath .lastIndexOf("/")) + "/"; loaderPath = loaderPath.replace(packPath, ""); String tPath = loaderPath + filePath; logger.info("file the path =" + tPath); in = new FileInputStream(tPath); } return in; }
4、读取图片的方法
jar中时使用相对路径读取,路径不能以/开头,且不能用getResource,方法如下
//imgPath在jar中是空字符串,非jar中是/ public static ImageIcon createImageIcon(String path) { String tmp = path; if(tmp != null && tmp.startsWith("/")) { path = path.substring(1); } try { String imgPath = Constants.getImgPath(); if("".equals(imgPath)) {//在jar中 return new ImageIcon(path); } else { return new ImageIcon(ImageIcon.class.getResource(imgPath + path)); } } catch(Exception e) { LogUtils.Log(logger, e); return null; } }
5、保存文件时,使用绝对路径,绝对路径获取方式
private static String RealClzPath=null; //classes目录的物理路径 private static Logger logger = Logger.getLogger(Constants.class); private static String imgPath = null; //图片路径前置,如果项目打包成JAR,前置为空,如果项目没打包,这前置为"/" static { String currentJarPath = null; try { currentJarPath = URLDecoder.decode(Constants.class.getProtectionDomain().getCodeSource().getLocation().getFile(), "UTF-8"); } catch (UnsupportedEncodingException e) { LogUtils.Log(logger, e); } String path = Constants.class.getResource("").getPath(); int pos = path.indexOf("!"); if(pos != -1) {//在jar中 logger.info("class is in jar"); RealClzPath = path.substring(0,pos); pos = RealClzPath.lastIndexOf("/"); imgPath = ""; if(pos != -1) { RealClzPath = path.substring(0,pos+1); } } else { //String loaderPath = Thread.currentThread().getContextClassLoader().getResource("").getPath(); imgPath = "/"; String loaderPath = currentJarPath; String packPath = Constants.class.getPackage().toString(); packPath = packPath.replace("package ", ""); packPath = "/" + packPath.replace(".", "/"); loaderPath = loaderPath.replace(packPath, ""); RealClzPath = loaderPath; } logger.info("RealClzPath = " + RealClzPath + " imgPath=" + imgPath); }
发表评论
-
MappedByteBuffer小结
2012-07-28 17:27 1600java的内存映射文件有如下特点: 1,使用虚拟内存, ... -
jstat 详解
2012-07-28 12:56 931jstat 详解 jstat ... -
NIO的内存映射文件一些问题
2012-07-28 12:51 1203见 http://yipsilon.iteye.com/bl ... -
JAVA使用HttpUrlConnection实现自动上传文件
2012-05-14 12:04 15450首先,实现自动上传文件方式有很多种,其中就有 SOCK ... -
Permanent会被GC
2012-04-23 17:27 822http://fallenlord.blogbus.c ... -
JVM内存分析工具
2011-11-28 17:17 1247参考 jvm内存分解: ... -
JVM内存解析
2011-11-28 17:10 890参考: http://vanadiumlin.iteye.c ... -
基本类型的初始化值
2011-11-28 11:05 1013各基本类型在没初始化时,默认如下值 boolean init ... -
多线程笔记
2011-11-28 10:47 8451、synchronized以线程为单位,不是以调用为单位,通 ... -
B/S系统打印
2011-11-10 17:00 1324B/S系统打印都很费劲,到目前我还没找到一个完善的方法,以下是 ... -
在文件中间插入数据
2011-11-10 15:55 1068目前没有什么好方法能直接在文件中间插入数据. 都是采用先将插 ... -
将JAR打包成EXE,并且生成安装文件
2011-11-10 15:21 2629桌面程序项目完成后,需要将项目打包成安装包在WINDOWS下运 ... -
卸载JDK导致applet不能显示
2011-11-09 17:59 899最近做测试,需要卸载JDK,卸载后发现JAVA UPDATE不 ... -
多线程下谨慎对待基类(抽象类)中的成员变量
2011-07-06 22:13 2387有这么个需求: 做开发 ... -
wait和notify使用方法
2011-07-05 13:47 1229原则是: 调用wait的对象必须是synchronized中的 ... -
SimpleDateFormat在多线程下不安全
2011-07-05 13:42 2099在工具类中有2个时间格式化和字符串转换成时间的函数,使用了类静 ... -
java计算两个日期间隔方法
2011-06-24 16:55 2818SimpleDateFormat formatter = ... -
jtable选中指定的行和选中事件监听
2011-06-16 18:49 11363选中行 table.getSelectionModel().s ... -
监听jtable单元格内容改变事件
2011-06-16 18:45 7596对话框监听jtable内容是否改变,改变后,在用户退出时提示是 ... -
自定义jtable单元格显示方式
2011-06-16 18:41 1572自定义jtable显示方式,需要继承DefaultTableC ...
相关推荐
然而,当项目完成后,我们需要将其打包成可执行的JAR文件,以便在其他环境中运行。在某些情况下,我们的项目可能依赖于外部的JAR库或者需要读取外部的配置文件,这在打包时需要特别处理。本文将详细介绍如何在...
然而,在某些场景下,我们可能需要将JSP页面转换为Servlet并打包成jar文件,以便于部署或运行。这通常在不支持JSP直接执行的环境下进行,例如在简单的Java应用服务器或者微服务架构中。 标题“把jsp编译打包成jar”...
下面我们将详细探讨如何在Eclipse中打包JAR包,并读取外部JAR包和外部配置文件。 首先,我们需要了解JAR文件的结构。JAR文件是Java类文件和相关资源的容器,它们被组织成目录结构,类似于Unix或Windows的文件系统。...
**JAR文件读取工具详解** Java Archive (JAR) 文件是Java平台上的一个重要组成部分,它主要用于打包Java类、资源文件以及元数据。JAR文件的出现使得Java开发者能够将多个类文件组合成一个单一的可执行文件,方便...
- `cvfm` 表示创建一个新的 JAR 文件,并从指定的 Manifest 文件读取元数据。 - `myapplication.jar` 是输出的 JAR 文件名。 - `myapplication.mf` 是 Manifest 文件。 - `-C classdir .` 指定 `.class` 文件...
通过这些步骤,可以读取 JAR 文件中的文件内容,并获得每个文件的名称、大小和压缩后的大小等信息。 此外, Java 2 SDK 标准版还提供了一个 jar 工具,可以在控制台下读写 JAR 文件。在实际应用中,可以根据需要...
【文件加密器(已打包成jar)】是一个使用Java编程语言开发的应用程序,它专注于数据安全,特别是对文件进行加密处理。在这个版本中,开发者针对先前版本的不足进行了改进,并添加了新的功能,以提供更全面的安全...
在Java编程中,有时我们需要从已经打包的JAR文件中读取特定的资源文件,例如配置文件、图片或库。本篇文章将详细讲解如何在Java中实现从JAR包中读取指定文件的方法。 首先,Java提供了`java.util.jar`包,其中包含...
预编译JSP可以减少应用程序启动时的解析时间,而将JSP打包成JAR文件则有利于资源的集中管理和部署。 首先,让我们了解**JSP预编译**的概念。JSP在第一次被请求时会被Web容器转换为Servlet(Java类),然后编译为...
在Spring Boot项目中,文件上传、显示和下载是常见的需求,尤其在构建Web应用程序时。Spring Boot提供了一种简单而高效的方式来处理这些操作。这里我们将深入探讨如何在...最后,打包成JAR文件使得应用易于部署和运行。
在使用SpringBoot进行开发时,我们经常会遇到在开发环境中能够正常读取resources目录下的文件,但是一旦将应用打包成jar文件并部署到服务器上运行时,就无法访问到这些资源文件的问题。这是因为SpringBoot的打包机制...
当我们的应用程序被打包成JAR文件后,有时我们需要从JAR内部读取配置文件,例如application.properties或application.yml。本文将深入探讨如何在Spring框架中实现这一功能。 首先,理解Spring的资源配置。Spring...
### JAVA打包后读取自身JAR中的文件 #### 背景介绍 在Java开发过程中,经常需要将项目...通过上述解决方案和注意事项,可以在Java程序中正确地处理打包后的JAR文件中的资源文件读取问题,确保程序的稳定性和可靠性。
3. **打包JAR**:使用jar命令将所有相关的.class文件和MANIFEST.MF打包成JAR。C++程序同样可以通过调用`system()`函数来执行这个命令。 以下是使用C++实现自动打包的思路: 1. **读取.java文件**:遍历目录,找出...
二次打包jar文件涉及到几个关键步骤: 1. **读取并解析jar文件**:首先,我们需要使用C#的`System.IO.Compression.ZipFile`类来读取和解压jar文件。这个类提供了方便的方法来打开、列出和提取zip文件(jar文件本质...
这个问题在开发和部署时非常常见,因为Spring Boot应用在运行时,会将静态资源打包到jar文件内部,直接使用文件路径读取方式将无法访问到这些资源。 首先,要理解Spring Boot应用打包后的资源访问机制。当Spring ...
- Maven和Gradle等构建工具允许你配置如何打包和处理JAR文件中的资源,比如在构建过程中自动处理资源文件的复制和替换。 通过这些方法,开发者可以方便地访问和操作JAR文件内部的文件内容,无论是简单的文本文件...
利用swt中的一个获取图片的类...打成jar包后,获取图片的路径中有"xxx.jar!"这里面的内容是不能够被操作系统识别出来的,因此直接通过路径来获取文件是不可能,使用SWTResourceManager可实现这一功能。
在SpringBoot应用中,文件读取是一个常见的需求,但在打包成jar文件并部署后,由于文件不再位于文件系统中,而是被包含在jar包内部,所以传统的文件读取方式会失效。本文将深入探讨如何解决SpringBoot jar包中的文件...