Java 运行JAR文件时出错
我完成了一个我正在做的Java游戏试图通过双击图标来运行,但未运行。它在Eclipse中运行良好。 试图从命令行运行它。给了我一个Java 运行JAR文件时出错,java,eclipse,jar,Java,Eclipse,Jar,我完成了一个我正在做的Java游戏试图通过双击图标来运行,但未运行。它在Eclipse中运行良好。 试图从命令行运行它。给了我一个NullPointerException,它位于Eclipse内部src文件夹中名为sprites的文件夹中的某个图像资源上 出于某种原因,当在Eclipse之外运行它时,它找不到这个资源 有什么建议吗 编辑 我使用Windows XP。IDE是Eclipse。在Eclipse内部,正如我所说,没有问题。 我使用以下命令来使用图像资源: Image image = n
NullPointerException
,它位于Eclipse内部src文件夹中名为sprites的文件夹中的某个图像资源上
出于某种原因,当在Eclipse之外运行它时,它找不到这个资源
有什么建议吗
编辑
我使用Windows XP。IDE是Eclipse。在Eclipse内部,正如我所说,没有问题。
我使用以下命令来使用图像资源:
Image image = new ImageIcon(this.getClass().getResource("/sprites/picture.PNG").getImage();
我检查了罐子里面,所有的资源都在里面
sprites
是src
中的一个文件夹。所以在我看来,它应该是有效的。有什么问题吗 如果资源文件打包到jar文件中,请使用
ClassLoader.getResourceAsStream
或Class.getResourceAsStream
它们无疑是从类路径加载资源数据的方法 如果您的来源是这样的:
/src
/mypackage
/myresourcespackage
- Resources.java
- image.png
您可以使用以下方法加载image.png
:
ImageIO.read(Resources.class.getResource("image.png"));
请尝试
MyClass.class.getResourceAsStream()
。使用此方法为图像指定路径时,路径相对于MyClass.class编译文件。不是您的.java文件,也不是您的项目目录
例如,如果文件系统如下所示:
+ Project Folder
|
-> + src
| |
| -> MyClass.java
|
-> + bin
|
-> MyClass.class
-> myImage.png
+ Project Folder
|
-> + src
| |
| -> MyClass.java
|
-> + bin
|
-> MyClass.class
-> + Sprites
|
-> + Images
|
-> myImage.png
然后使用以下代码从myImage.png
检索buffereImage
:
InputStream stream = MyClass.class.getResourceAsStream("myImage.png");
BufferedImage myImage = ImageIO.read(stream);
请记住,在使用getResourceAsStream()
方法时,必须指定相对于.class文件而不是.java文件的路径。许多IDE将它们放在不同的位置
您可以使用文件系统获得您想要的任何高级功能,但只需确保所有路径都正确即可。
例如,如果文件系统如下所示:
+ Project Folder
|
-> + src
| |
| -> MyClass.java
|
-> + bin
|
-> MyClass.class
-> myImage.png
+ Project Folder
|
-> + src
| |
| -> MyClass.java
|
-> + bin
|
-> MyClass.class
-> + Sprites
|
-> + Images
|
-> myImage.png
您只需将文件路径从
myImage.png
更改为Sprites/Images/myImage.png“
。请注意文件扩展名的使用以及缺少前导的/
,您可能希望签入.jar(基本上是一个压缩文件夹)对于您的资源。路径可能是错误的;)您是否检查了图像是否在jar中,并且路径是否指向正确的位置?您是否可以向我们展示您用于加载此图像的代码?操作系统?运行该图像的确切命令?jar的内容列表?所有这些都完全不重要,似乎……这个.getClass.getResource(“/sprites/file.PNG“?检查该文件是否包含在jar中(jar是一个zip文件)。删除起始文件/