当我构建一个jar文件并运行它时,由于找不到图像图标,它显示一个空指针异常
new ImageIcon(getClass().getClassLoader().getResource("icons/exit.png")));
这是我运行jar文件时得到的错误
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at mediaplayer.MediaPlayer.buildtoolbar(MediaPlayer.java:130)
at mediaplayer.MediaPlayer.<init>(MediaPlayer.java:81)
at mediaplayer.MediaPlayer.main(MediaPlayer.java:464)
但是当我在NetBeans中运行这个项目时,它运行良好
这是我列出罐子里所有文件时的输出
META-INF/
META-INF/MANIFEST.MF
helliker/
helliker/id3/
icons/
mediaplayer/
Thumbs.db
exit.png
ff1.png
helliker/id3/BinaryParser.class
helliker/id3/CorruptHeaderException.class
helliker/id3/ID3Exception.class
helliker/id3/ID3FieldDataException.class
helliker/id3/ID3Tag.class
helliker/id3/ID3v1Tag.class
helliker/id3/ID3v2ExtendedHeader.class
helliker/id3/ID3v2Footer.class
helliker/id3/ID3v2FormatException.class
helliker/id3/ID3v2Frame.class
helliker/id3/ID3v2Frames.class
helliker/id3/ID3v2Header.class
helliker/id3/ID3v2Tag.class
helliker/id3/MP3Comparator.class
helliker/id3/MP3File.class
helliker/id3/MP3FileFilter.class
helliker/id3/MPEGAudioFrameHeader.class
helliker/id3/NoMPEGFramesException.class
helliker/id3/NullsoftID3GenreTable.class
helliker/id3/Playlist.class
helliker/id3/PlaylistException.class
helliker/id3/XingVBRHeader.class
icons/Thumbs.db
icons/exit.png
icons/ff1.png
icons/label.jpg
icons/openpl.gif
icons/pause1.png
icons/play1.png
icons/playlist.png
icons/rr.png
icons/rr1.PNG
icons/stop.png
label.jpg
mediaplayer/MediaPlayer$1.class
mediaplayer/MediaPlayer$PlaylistFilter.class
mediaplayer/MediaPlayer.class
mediaplayer/PlaylistManager$1.class
mediaplayer/PlaylistManager$MP3Filter.class
mediaplayer/PlaylistManager$PlaylistFilter.class
mediaplayer/PlaylistManager.class
mediaplayer/Settings.class
mediaplayer/TagEditor.class
mediaplayer/Thumbs.db
openpl.gif
pause1.png
play1.png
playlist.png
rr.png
rr1.PNG
谢谢大家。我找到了答案
button = new JButton(new ImageIcon(getClass().getResource("/icons/playlist.png")));
我删除了ClassLoader()并且它起作用了,但我只是不知道为什么。有人能给我解释一下这背后的理论吗?
当包mediaPlayer
中的MediaPlayer
在"icons/exit.png"
处调用嵌入式资源时,将发生异常。这将解析为以下路径:
mediaplayer/icons/exit.png
我想那不是路,实际上是。
icons/exit.png
这就是为什么字符串
需要是“/图标/退出.png”
- 请注意/
前缀。
String
前面的/
通知类加载器,我们的意思是它从类路径的根搜索资源,而不是从它被调用的类的包。
在jar文件实际上是如何构建的问题中缺少了一些信息,但是使用了下面的目录布局
├── bin
│ ├── com
│ │ └── example
│ │ └── ImageIconTest.class
│ └── icons
│ └── exit.png
└── src
├── MANIFEST.MF
└── com
└── example
└── ImageIconTest.java
以及< code>ImageIconTest.java中的以下代码
package com.example;
import javax.swing.ImageIcon;
public class ImageIconTest {
public void run() {
ImageIcon ii = new ImageIcon(getClass().getClassLoader().getResource("icons/exit.png"));
System.out.println(ii);
}
public static void main(String[] args) {
ImageIconTest app = new ImageIconTest();
app.run();
}
}
您可以使用从文件系统正确运行示例
$ java -classpath bin com.example.ImageIconTest
使用清单。包含以下内容的MF文件:
Manifest-Version: 1.0
Main-Class: com.example.ImageIconTest
您可以将它打包到一个可执行的jar文件中,并从该jar文件中运行它:
$ jar cvfm app.jar src/MANIFEST.MF -C bin .
$ java -jar app.jar
这两种方法都可以正常工作,重要的细节是确保图标目录包含在jar文件中的正确位置。
列出jar文件内容时,它应该如下所示:
0 Tue Nov 06 12:27:56 CET 2012 META-INF/
107 Tue Nov 06 12:27:56 CET 2012 META-INF/MANIFEST.MF
0 Tue Nov 06 12:27:56 CET 2012 com/
0 Tue Nov 06 12:27:56 CET 2012 com/example/
950 Tue Nov 06 12:27:56 CET 2012 com/example/ImageIconTest.class
0 Tue Nov 06 12:00:36 CET 2012 icons/
873 Tue Nov 06 12:00:36 CET 2012 icons/exit.png
注意图标目录的位置。
问题内容: 我已经编写了一个程序来加密Netbeans中的图像。从Netbeans运行时,该程序运行良好,但是当我将其构建为.jar文件时,即使我将图像文件与.jar文件放在同一文件夹中,它也无法读取图像。 //加密 //加载/写入图片 问题答案: 目前尚不清楚以下哪个触发您的错误。这个 将从当前目录读取,该目录不一定与您的jar文件所在的目录相同。 这个 将从类所在的jar文件中的目录中读取。请
我很难弄清楚这个问题,我几乎什么都试过了。 我希望我的程序从Jar文件中读取两个资源,并且它将在eclipse中运行良好。但是当我从命令提示符运行jar时,它会给出空指针异常。 结构: src/main/java/App。JAVA src/main/resources/properties/application。属性 src/main/resources/spring/applicationCo
我在为D写一个角色构建器 我正在使用InputStream将javafx Image构造加载到ImageView构造函数[new ImageView(new Image(getClass(). getResourceAsStream(...)))]中;当我加载一些. jpeg图像时,它可以工作,但当我对. png图像执行相同的过程时就不行了 我已经尝试了这里描述的许多关于StackOverflow
环境:Ubuntu 18Spring开机2.0 JDK 11 当应用程序在IntelliJ中运行时,它会正确执行,但在Spring Bootmaven插件打包文件后读取文件时不会。 PS:该文件确实可以在打包的jar文件中找到!
你好,我最近把我的JavaFX8项目改为Maven,除了加载JAR旁边的文件外,一切都很好。这在以前起作用,但现在不起作用了。 文件夹结构: 要加载的图标位于/target/Icons中,JAR文件位于/target中 我读取文件的代码如下所示: 它进入循环并查找文件,但当新图像(file.getAbsoltePath())被调用时,它会崩溃。 我尝试了toExternalForm()等的各种方法
问题内容: 我有一堆iReport源代码(jrxml)通过以下路径位于工作区中: 当我将源代码打包到jar文件中时。我将拥有以下文件结构目录: 在我的源代码中,我具有以下代码来验证jrxml文件的存在: 当我通过命令执行此jar文件时: 我碰到一个错误提示,说特定的jrxml_file不存在。 我的疑问: 我只是想知道我是否允许读取位于MyJar.jar中的jrxml_file? 在读取jrxml