【发布时间】:2012-11-23 15:48:40
【问题描述】:
我有一个 java 项目。我想将它导出到可运行的 jar 文件。
我用eclipse来做。
但是当我运行创建的 jar 文件时,我收到Error ~ file not found : config\file.xml(系统找不到指定的路径)。
如何导出文件夹以在任何地方运行成功的 jar 文件?
【问题讨论】:
我有一个 java 项目。我想将它导出到可运行的 jar 文件。
我用eclipse来做。
但是当我运行创建的 jar 文件时,我收到Error ~ file not found : config\file.xml(系统找不到指定的路径)。
如何导出文件夹以在任何地方运行成功的 jar 文件?
【问题讨论】:
如果您不需要在 jar 之外配置配置,只需将其包含在其中并使用 getClass().getClassLoader().getResourceAsStream("config.xml") 之类的东西(如果它位于级别) jar 中的“root”包
【讨论】:
听起来您的应用程序正在使用文件系统中的相对路径查找配置文件。为了使 jar 完全自给自足,必须修改代码以在类路径中查找配置文件,并且该文件必须包含在 jar 中。
为此,必须将打开文件的代码更改为使用Class#getResourceAsStream(),而不是使用File 对象。
【讨论】:
我建议您使用 ant 或其他构建系统。这是一个关于 ant 的简短教程:
http://ant.apache.org/manual/tutorial-HelloWorldWithAnt.html
在您的 ant 构建脚本中使用 xml 创建 jar 文件非常容易。我已经做过很多次了:
<target name="jar" depends="compile">
<mkdir dir="${jar.dir}"/>
<jar destfile="${jar.dir}/${ant.project.name}.jar" basedir="${classes.dir}">
<manifest>
<attribute name="Main-Class" value="${main-class}"/>
</manifest>
</jar>
</target>
其他人可能会建议maven之类的,但实际上它们都是不错的选择。从 Eclipse 等 IDE 导出确实不是一个可行的长期解决方案。
【讨论】:
如果你的项目目录中有一个配置文件夹,并且有一个你想读取的文件,你也必须将该文件夹复制到你的 jar 文件的目录中
【讨论】: