我使用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不确定我在应用程序中加载的图像的真实路径,所以我不知道正确的方法来避免这个问题。
我知道这里有很多关于这个问题的问题,但我不知道真正的解决方案,我尝试了很多答案而且它们没有用!
感谢您的合作:))
答案 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”。