我在尝试将我的java项目导出到runnable jar时遇到了问题。代码在eclipse中运行,但导出后无法获取资源。我在eclipse中的目录结构
project_A - src - package_a - a.java
- res - b.png
jar中的结构
A - src - A.class
res - b.png
META-INF - MANIFEST
MANIFEST中的内容
Manifest-Version: 1.0
Class-Path: .
Main-Class: project_A.A_class
我使用以下代码获取图片资源
URL url = getClass().getResource("res/b.png");
img_bg = ImageIO.read(url);
此代码在Eclipse中有效,但仅适用于相对路径,如果我将res dir
设置为与src dir
相同的级别,上面的代码也不起作用,则返回输入为null 。
我无法看到这个程序在执行jar时得到的路径,不知道如何在没有输出信息的情况下进行调试。
所以任何人都可以帮我弄清楚什么是正确的结构以及如何在jar中获取图像?
我的错误,第一个日蚀结构是错误的,它的结构与Betlista的anwser相同
答案 0 :(得分:1)
我想,你的问题中有几个错误的陈述,我的项目如下:
这是ResourceTest
import java.io.IOException;
import java.net.URL;
import javax.imageio.ImageIO;
public class ResourceTest {
public static void main(String[] args) throws IOException {
URL resource = ResourceTest.class.getResource("/pict.png");
assert resource != null : "Resource is null";
ImageIO.read(resource);
}
}
我导出了res_test.jar
,当我运行java -jar res_test.jar
时,它对我有效。
jar的内容是
res_test.jar
+- META-INF
+- MANIFEST.MF
+- pict.png
+- ResourceTest.class
和MANIFEST.MF的内容是
Manifest-Version: 1.0
Class-Path: .
Main-Class: ResourceTest