运行JAR文件时出错

时间:2014-01-23 15:32:11

标签: java eclipse jar

我完成了一个正在研究的Java游戏。 试图通过双击图标来运行它,但没有运行。它在Eclipse中运行良好。

试图从命令行运行它。给我一个NullPointerException,在我在Eclipse里面的src文件夹中名为sprites的文件夹中的一些图像资源上。

出于某种原因,在Eclipse外部运行时,它找不到此资源。

有什么建议吗?

修改

我使用的是Windows XP。 IDE是Eclipse。在Eclipse中,正如我所说,没有问题。 我使用以下命令来使用图像资源:

Image image = new ImageIcon(this.getClass().getResource("/sprites/picture.PNG").getImage();

我在JAR内部检查过,所有资源都在里面。

spritessrc内的文件夹。所以据我所知,它应该有效。有什么问题?

3 个答案:

答案 0 :(得分:1)

如果您的来源是这样的:

/src 
  /mypackage
      /myresourcespackage
          - Resources.java
          - image.png

您可以使用

加载image.png
ImageIO.read(Resources.class.getResource("image.png"));

答案 1 :(得分:1)

试试MyClass.class.getResourceAsStream()。使用此方法指定图像的路径时,路径相对于MyClass.class 已编译的文件。不是你的.java文件,也不是你的项目目录。

例如,如果您的文件系统如下所示:

+ Project Folder
|
-> + src
|  |
|  -> MyClass.java
|
-> + bin
   |
   -> MyClass.class
   -> myImage.png

然后,您将使用以下代码从BufferedImage

中检索myImage.png
InputStream stream = MyClass.class.getResourceAsStream("myImage.png");
BufferedImage myImage = ImageIO.read(stream);

请记住,在使用getResourceAsStream()方法时,必须指定相对于.class文件的路径,而不是.java文件。许多IDE将它们放在不同的位置。

您可以使用文件系统获得高级功能,但只需确保所有路径都正确即可。 例如,如果您的文件系统如下所示:

+ Project Folder
|
-> + src
|  |
|  -> MyClass.java
|
-> + bin
   |
   -> MyClass.class
   -> + Sprites
      |
      -> + Images
         |
         -> myImage.png

您只需将文件路径从myImage.png更改为Sprites/Images/myImage.png"即可。请注意文件扩展名的使用以及缺少前导/

答案 2 :(得分:0)

如果资源文件打包到jar文件中,请使用

ClassLoader.getResourceAsStreamClass.getResourceAsStream

它们绝对是从类路径加载资源数据的方法。