我正在创建一个基本的‘乒乓球’游戏。我已经完成了游戏,除了一些我需要删除的小故障。这个游戏在netbeans中运行得很好,但是如果我创建了一个jar文件,就会出现错误,导致它无法运行。我对java很陌生,但我相信这与我的代码查找图像有关,但图像还没有加载。这就是错误。如何在jar文件中的netbeans之外执行此操作?
C:\Users\michael>java -jar "C:\Users\michael\Documents\NetBeansProjects\Pong\dis
t\Pong.jar"
Exception in thread "main" java.lang.NullPointerException
at javax.swing.ImageIcon.<init>(Unknown Source)
at pong.BallMainMenu.<init>(BallMainMenu.java:19)
at pong.Board.gameInit(Board.java:93)
at pong.Board.addNotify(Board.java:86)
at java.awt.Container.addNotify(Unknown Source)
at javax.swing.JComponent.addNotify(Unknown Source)
at java.awt.Container.addNotify(Unknown Source)
at javax.swing.JComponent.addNotify(Unknown Source)
at java.awt.Container.addNotify(Unknown Source)
at javax.swing.JComponent.addNotify(Unknown Source)
at javax.swing.JRootPane.addNotify(Unknown Source)
at java.awt.Container.addNotify(Unknown Source)
at java.awt.Window.addNotify(Unknown Source)
at java.awt.Frame.addNotify(Unknown Source)
at java.awt.Window.show(Unknown Source)
at java.awt.Component.show(Unknown Source)
at java.awt.Component.setVisible(Unknown Source)
at java.awt.Window.setVisible(Unknown Source)
at pong.Pong.<init>(Pong.java:16)
at pong.Pong.main(Pong.java:23)
发布于 2012-09-25 08:35:39
我怀疑您正在编写相对于工作目录的文件urls,当您在NetBeans中执行它时,它可能会有所不同(这取决于您从控制台运行它时从哪里执行它)。
例如,在netbeans项目中运行此命令时,工作目录最有可能是C:\Users\michael\Documents\NetBeansProjects\Pong,,而在另一个示例中,工作目录的只有"C:\Users\michael\“
假设您正在加载路径为"myimages/test.jpg“的图像。在netbeans中运行时,它将变为"C:\Users\michael\Documents\NetBeansProjects\Pong\myimages\test.jpg“,在另一个示例中将变为"C:\Users\michael\myimages\test.jpg”。
尝试使用以下命令访问该资源
getClass().getResource("/myimage/test.jpg");
http://docs.oracle.com/javase/1.4.2/docs/api/java/lang/ClassLoader.html#getResource(java.lang.String
发布于 2012-09-24 23:50:42
是否已将Java JDK和外部库(.jar文件)添加到系统路径变量中?
由于您正在使用Netbeans,因此可以正确使用此源How to deploy Java Project using Netbeans。要为Java设置系统路径,请查看this链接。它可能会根据您的平台而有所不同;例如Windows、MacOS等。
https://stackoverflow.com/questions/12578951
复制相似问题