Java jar和Eclipse运行之间的行为非常不同

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子句。我怀疑我缺少了一个非常

我使用XML文档作为多个类似文档(组织相同的月度报告)的模板。我正在努力找到文件的最通用路径。我想到了:

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")