因此,我正在尝试编写一个常规 Java 应用程序,该应用程序从编译时由 ANT 更新的文件中读取当前版本。当使用 OpenJDK 或 SunJDK 在我的开发机器(Ubuntu 11.04 上的 Eclipse 3.5.2)上运行时,它会抛出 FileNotFoundException
。添加或删除前导反斜杠似乎没有效果。
关于如何解决这个问题有什么想法吗?我相信错误出在这一行:
in = new FileInputStream("data/build_info.properties");
代码-更新
转换为 Java 属性
String revision = "";
Properties defaultProps = new Properties();
FileInputStream in;
try {
in = new FileInputStream("data/build_info.properties");
defaultProps.load(in);
in.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
revision = "Version: " + defaultProps.getProperty("build.major.number") + "." +
defaultProps.getProperty("build.minor.number") + " " +
"Revision: " + defaultProps.getProperty("build.revision.number");
ANT Jar 脚本
<target name="jar">
<antcall target="clean" />
<antcall target="compile" />
<jar destfile="${dir.dist}/${name.jar}" basedir="." includes="${dir.lib}/*" filesetmanifest="mergewithoutmain">
<manifest>
<attribute name="Main-Class" value="emp.main.EmpowerView" />
</manifest>
<fileset dir="${dir.build}" includes="**/*" excludes="META-INF/*.SF" />
<fileset dir="." includes="${dir.media}/*" />
<fileset dir="." includes="${dir.data}/*" />
</jar>
<chmod file="${dir.dist}/${name.jar}" perm="+x" />
</target>
最佳答案
如果您尝试加载 Jar 内的文件,则需要使用 java.lang.Class.getResourceAsStream()
加载文件。您无法使用 java.util.File
指向 Jar 中的文件。有关如何使用它的示例,请参阅此答案:
关于java - java中路径名前导反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6833539/