Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 尝试从jar文件加载图标_Java_Jar - Fatal编程技术网

Java 尝试从jar文件加载图标

Java 尝试从jar文件加载图标,java,jar,Java,Jar,我正在尝试从jar文件加载图标。我尝试从jar文件内的类以及jar文件外的类加载它 在jarfile外部-返回空异常 java.net.URL imageURL = LoadHTMLExample.class.getClassLoader() .getResource("icons/mouse.png"); 在LoadHTMLExample中jar文件的侧面 java.net.URL imageURL = this.getClass().getClassLoader() .ge

我正在尝试从jar文件加载图标。我尝试从jar文件内的类以及jar文件外的类加载它

在jarfile外部-返回空异常

java.net.URL imageURL = LoadHTMLExample.class.getClassLoader()
    .getResource("icons/mouse.png");
在LoadHTMLExample中jar文件的侧面

java.net.URL imageURL = this.getClass().getClassLoader()
    .getResource("icons/mouse.png");
得到同样的错误


我也尝试过不同的方法 “icons”、“/icons”“icons/”“/icons/mouse.png”“icons/mouse.png”

任何想法似乎都不管用

图标在jar文件中

jar
 --icons --- {all the images}

 --com.blah.blah

我一直使用系统类加载器,它的路径相对于JAR的根:

URL url = ClassLoader.getSystemClassLoader().getResource("icons/mouse.png");
Icon icon = new ImageIcon(url);

跳过类加载器,改为以流的形式获取资源。如果不需要URL,可以直接将其转换为BuffereImage,如下所示。我将流和异常处理留作进一步练习

InputStream stream = LoadHTMLExample.class
    .getResourceAsStream( "/icons/mouse.png" );
BufferedImage image = ImageIO.read( stream );


发问者需要一个URL,让我们回到其他人的建议。图像肯定在jar中,不是吗?

我认为
getResource
获取相对于
LoadHTMLExample.class
位置的资源。因此,您的
jarfile
的结构应如下所示:

myjar.jar
 |
 |- ...
 |- LoadHTMLExample.class
 |- ...
 \-- icons
      |
      \- mourse.png

另外,您可能是通过
getResourceAsStream
获取流,而不是获取
URL

在运行时的类路径上是否有问题?我有一个带有png的jar,如果我不在类路径中包含它,我可以重新创建null。如果jar在那里,它们就会消失。

final java.net.URL imageURL3=com.java.html.LoadHTMLExample.class.getResource(“icons/”

适用于以下目录结构

myjar.jar | |- ... |-LoadHTMLExample.class |- ... --图标 | -mourse.png

谢谢大家的帮助

Icon icon = new ImageIcon(ClassLoader.getSystemResource("icons/mouse.png"));
getSystemResource()

从用于加载类的搜索路径中查找指定名称的资源


这将在jar文件中找到您的图标。

名称在jar资源中区分大小写。还有一个开始/可能缺失。我也尝试过“icons”的变体,“/icons”“icons/”/icons/mouse.png”“icons/mouse.png”我遇到了同样的问题,我尝试了你提到的所有事情,你是如何解决的?谢谢或者,将路径从icons/mourse.png更改为/icons/mourse.png(注意开头的“/”)。考虑到所有其他因素,您肯定需要按照Peter的建议执行,因为加载“icons/mouse.png”意味着相对于类加载它。在你的罐子里,你的根上有图标,所以你必须用前斜杠作为前缀。我让它工作了!final java.net.URL imageURL3=com.java.html.LoadHTMLExample.class.getResource(“icons/”);这适用于上面的diagramClass.getResourceAsStream()只是委托给类加载器。这基本上是一样的。我需要URL,webrenderobject将使用资源位置来提取iconsalso尝试过你的方法,并且image keeps总是空的,所以任何一种方法都不起作用…什么是阻止读取jar文件?