Java Can';无法从jar加载资源
我在尝试将java项目导出到runnable jar时遇到了问题。代码在eclipse中运行,但导出后无法获取资源。eclipse中的dir结构Java Can';无法从jar加载资源,java,eclipse,jar,Java,Eclipse,Jar,我在尝试将java项目导出到runnable jar时遇到了问题。代码在eclipse中运行,但导出后无法获取资源。eclipse中的dir结构 project_A - src - package_a - a.java - res - b.png 罐内结构 A - src - A.class res - b.png META-INF - MANIFEST 舱单上有什么 Manifest-Version: 1.0 Cl
project_A - src - package_a - a.java
- res - b.png
罐内结构
A - src - A.class
res - b.png
META-INF - 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
相同的级别,则上述代码也不工作,始终返回空输入
当我执行jar时,我看不到这个程序的路径,不知道如何在没有输出信息的情况下进行调试
那么,有谁能帮我弄清楚什么是正确的结构,以及如何在jar中获取图像呢
我的错误,第一个eclipse结构是错误的,它的结构与Betlista的anwser中所示的结构相同,我认为,您的问题中有几个错误的陈述,我的项目如下所示: 这是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
时,它对我有效
罐子里的东西是
res\u test.jar
+-META-INF
+-MANIFEST.MF
+-pict.png
+-资源测试类
而MANIFEST.MF的内容是
清单版本:1.0
类路径:。
主要类别:资源测试
尝试使用getClass().getResource(“/res/b.png”)
。另外,您是否确定b.png
实际上驻留在Jar文件中,就像我认为Eclipse没有包含src
目录中的资源一样……您的代码是无效的Java代码。清单中的主类条目与任何类都不匹配。jar中类文件的名称与Java源文件的名称不匹配。告诉我们真相。