我在java中遇到了一个奇怪的问题。我想创建一个可运行的jar: 这是我唯一的课程:
public class Launcher {
public Launcher() {
// TODO Auto-generated constructor stub
}
public static void main(String[] args) {
String path = Launcher.class.getResource("/1.png").getFile();
File f = new File(path);
JOptionPane.showMessageDialog(null,Boolean.toString(f.exists()));
}
}
正如你所看到的,它只是输出,如果它可以找到文件。 在eclipse下工作正常(返回true)。我用图片1.png创建了一个源文件夹资源。 (资源文件夹添加到构建路径中的源)
只要我将项目导出到可运行的jar并启动它,它就会返回false。 我不知道为什么。有人有想法吗? 提前致谢
编辑:我按照示例2创建了资源文件夹:Eclipse exported Runnable JAR not showing images
答案 0 :(得分:2)
如果您想从.jar文件中加载资源,请使用getClass().getResource()
。这将返回一个具有正确路径的URL。
Image icon = ImageIO.read(getClass().getResource("image´s path"));
要访问广告素材中的图片,请使用Class.getResource()
。
我通常做这样的事情:
InputStream stream = MyClass.class.getResourceAsStream("Icon.png");
if(stream == null) {
throw new RuntimeException("Icon.png not found.");
}
try {
return ImageIO.read(stream);
} catch (IOException e) {
throw new RuntimeException(e);
} finally {
try {
stream.close();
} catch(IOException e) { }
}
你仍然明白,请仔细阅读此链接。
答案 1 :(得分:0)
因为图像不是单独的文件,而是打包在.jar中。
使用代码从流
创建图像InputStream is=Launcher.class.getResourceAsStream("/1.png");
Image img=ImageIO.read(is);
答案 2 :(得分:0)
尝试使用它来获取图像
InputStream input = getClass().getResourceAsStream("/your image path in jar");
答案 3 :(得分:0)
两个简单的步骤:
1 - 将文件夹(图像所在的位置)添加到构建路径;
2 - 使用此:
InputStream url = this.getClass().getResourceAsStream("/load04.gif");
myImageView.setImage(new Image(url));