Java应用程序可以从netbeans中正常工作,但不能在命令行或.jar文件中工作

时间:2011-12-12 21:41:28

标签: java swing netbeans command-line jar

我使用netbeans创建了一个应用程序,当我从netbeans运行它时它非常好用, 但是当我尝试从命令行或可摘的.jar文件运行它时,它不起作用!这个错误在我看来:

Dec 12, 2011 11:36:33 PM game.Threads.Intro_main <init>
SEVERE: null
javax.imageio.IIOException: Can't read input file!
        at javax.imageio.ImageIO.read(Unknown Source)
        at game.Threads.Intro_main.<init>(Intro_main.java:58)
        at game.Intro.<init>(Intro.java:28)
        at game.Start.<init>(Start.java:25)
        at game.Start.main(Start.java:35)

Exception in thread "main" java.lang.NullPointerException
        at sun.awt.CustomCursor.<init>(Unknown Source)
        at sun.awt.windows.WCustomCursor.<init>(Unknown Source)
        at sun.awt.windows.WToolkit.createCustomCursor(Unknown Source)
        at game.Threads.Intro_main.<init>(Intro_main.java:69)
        at game.Intro.<init>(Intro.java:28)
        at game.Start.<init>(Start.java:25)
        at game.Start.main(Start.java:35)

我认为问题在于命令行&amp; .jar不确定我在应用程序中加载的图像的真实路径,所以我不知道正确的方法来避免这个问题。

我知道这里有很多关于这个问题的问题,但我不知道真正的解决方案,我尝试了很多答案而且它们没有用!

感谢您的合作:))

3 个答案:

答案 0 :(得分:3)

避免这种情况的最佳方法是将要使用的图像打包到.jar文件中。然后使用类加载器加载图像。

javax.imageio.ImageIO.read(getClass().getResourceAsStream("myImage.png"));

答案 1 :(得分:1)

要解决此问题,只需通过winrar存档程序将jar文件解压缩到一个文件夹中。然后看结果..你的外部文件不会在那里..所以你必须将你的外部文件与你的jar文件放在同一个文件夹中。并且出现NullPointerException问题并未正确初始化您的jar文件。您必须设置具有main方法的Main类。

答案 2 :(得分:1)

如果您使用只读图像,则可以将它们保留在jar中并使用URL getClass()。getResource()或InputStream getClass()。getResourceAsStream()。否则,您可以使用 System.getProperty(“user.dir”)的工作目录路径。

主目录 System.getProperty(“home.dir”)通常也会被使用:例如,对于NetbeansIDE使用“/ NetbeansProjects”。