Java jar和Eclipse运行之间的行为非常不同
我使用XML文档作为多个类似文档(组织相同的月度报告)的模板。我正在努力找到文件的最通用路径。我想到了:Java jar和Eclipse运行之间的行为非常不同,java,eclipse,file-io,jar,Java,Eclipse,File Io,Jar,我使用XML文档作为多个类似文档(组织相同的月度报告)的模板。我正在努力找到文件的最通用路径。我想到了: File f1 = new File("src/Statements/TemplateStatement.xml"); 其中,/Statements/是Eclipse中src选项卡下的一个文件夹,就好像它只是另一个包一样 然后: 从Eclipse运行时,它工作得很好,我的工作也完成了。当在我的桌面(同一台机器和文件系统)上作为.jar运行时,我每次都点击else子句。我怀疑我缺少了一个非常
File f1 = new File("src/Statements/TemplateStatement.xml");
其中,/Statements/
是Eclipse中src
选项卡下的一个文件夹,就好像它只是另一个包一样
然后:
从Eclipse运行时,它工作得很好,我的工作也完成了。当在我的桌面(同一台机器和文件系统)上作为.jar
运行时,我每次都点击else
子句。我怀疑我缺少了一个非常基本但重要的属性,即jars如何打包工作区并运行它(就像没有与之关联的src
目录一样?)
我没有找到关于如何从jared应用程序中查找路径、访问、读取、写入、复制等文件的示例或解释。我真的希望避免硬编码完整路径,因为在这种情况下,代码可能会在各种机器上运行。任何建议或建议都将不胜感激。我刚刚遇到一个类似的问题,它是由java.io.FileReader函数引起的,该函数使用平台默认编码 至于我的情况,在Runnable.jar运行中,java.io.FileReader使用ISO-8859-1编码,而在Eclipse中它使用UTF-8编码。替换
new FileReader(filepath)
与
解决了我的问题。欢迎来到StackOverflow,Beircheart。您是如何创建
jar
文件的?你看过了吗?它解释了如何将eclipse项目导出为jar
文件,以及如何包含其他组件。jar中的对象不是文件,不能使用file
访问。使用Class.getResource
访问jar对象。
new FileReader(filepath)
new InputStreamReader(new FileInputStream(filepath), "UTF-8")