所以我有一个程序,我导出到jar。这是一个Spring项目,它反复将数据库中的信息写入文本文件。有四个java文件:
<HDF5 dataset "00000001": shape (4,), type "<i8">
两个XML文件
JAVA FILES
App.java
Runscheduler.java
Rowmapper.java
pojoObject.java
以及两个配置文件
XML files
job-request.xml
database.xml
我有一个运行jar的批处理文件,一切正常。我必须外化的唯一文件是我的属性文件。
所以这就是问题所在。
当我将eclipse中的spring项目打包到一个可执行的jar中然后通过批处理(.bat)文件运行时,它会打包除“CONF”文件夹之外的所有内容。我必须将“CONF”文件夹放在与.bat和.jar文件相同的文件夹中。然后它完美运行。现在我也试图外化两个弹簧XML文件,但我不知道它们是如何与.jar一起打包的。 App.java(包含“main”函数)加载两个xml文件,如下所示:
CONF
log4j.properties
configuration.properties
但实际路径是
String[] springConfig =
{ "spring/batch/config/database.xml",
"spring/batch/jobs/job-request.xml"
};
ApplicationContext context =
new ClassPathXmlApplicationContext(springConfig);
项目目录内。但是,当我尝试更改springConfig加载到resources / spring的路径时......它不起作用。
如果有任何方法可以打包XML文件,特别是作业请求,在.jar之外,仍然可以运行程序,请告诉我。谢谢!
编辑:对于任何想知道的人,我通过简单地导出为文件系统解决了这个问题。工作就像一个魅力。
答案 0 :(得分:1)
我们有类似的情况。我们使用了ant jar target&#34;排除&#34;排除jar中不需要的xml文件。
<jar jarfile="${dir.dist}/ourjar.jar"
basedir="${dir.build}"
includes="**/*.class"
excludes="..."/>
我们按如下方式访问了外部xml文件
public class BootstrapBean {
private File configFile;
public void setConfigFile(Resource resource) {
this.configFile = resource.getFile()
}
...
}
XML配置
<bean id="bean" class="mypackage.BootstrapBean">
<property name="file" value="file: a path to the xml file"/>
</bean>