如何正确地在Jar中打包资源

时间:2011-08-31 21:14:16

标签: java eclipse resources jar

我知道还有其他问题针对同一个问题,但问题是解决方案对我不起作用。 我有一个小工具应该读取我想要的文件并打包作为资源并依赖于其他项目(我使用的是Eclipse Helios),我喜欢将它作为罐子而不是单个类。

作为Eclipse中的应用程序,我可以通过

访问我的资源
String path = MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").getPath();
System.out.println(path);
File file = new File(MyClass.class.getClassLoader().getResource("resources/" + name + ".SOURCE").toURI());
defaultSource = readSOURCEFile(file);

当且仅当我将resources文件夹放在输出路径下(已编译的源)时,如果我将它放在我的src文件夹中。

当我打包项目时,根文件夹或classes文件夹中的资源根本不打包。如果我的src文件夹中有资源,则将其打包在src / resources下。

我使用Export - Runnable Jar,我做错了什么? 如果我尝试使用Export - Jar,我可以正确打包我的源代码和资源,但是我在设置主类时遇到问题而无法执行jar。清单是正确的,课程就在那里: - (。

第二个问题:在打包的jar中我得到错误:URI不是分层的(在我手动移动jar中的资源后我可以执行jar)

提前致谢!

我已将源链接到工作区是一个问题吗?

1 个答案:

答案 0 :(得分:16)

将项目根文件夹下的resource文件夹标记为Eclipse中的“源文件夹”(右键单击文件夹,转到“构建路径”>“用作源文件夹”)。然后阅读这样的资源:

InputStream is = MyClass.class.getClassLoader().getResourceAsStream(name + ".SOURCE");
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
String line = reader.readLine();