2011-11-19 24 views
2

我创建了一个jar文件usign maven2的生成jar文件。我想用命令来运行jar文件:未能执行使用Java的罐子命令

java -jar sample.jar com.app.Test 

Test是由具有main方法的类。但我得到这个例外:

Exception in thread "main" java.lang.NullPointerException 
     at sun.launcher.LauncherHelper.getMainClassFromJar(Unknown Source) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 

任何人都可以帮我解决这个异常,并运行jar文件?

在此先感谢。

+0

是否包含在你的JAR清单文件,指定主类运行的格式?请参阅:http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest –

+0

也许清单文件被破坏?你能打开jar文件,并检查主类是否在META-INF/Manifest中正确定义? – Thilo

+0

你可以在罐子外面运行它吗? – pajton

回答

7

如果你想运行测试类,你应该使用

java -cp sample.jar com.app.Test 

这样一来,你的jar添加到类路径,然后运行指定的主类。

java -jar做什么是它执行一个可运行jar文件(定义在清单文件中它自己的主类)。之后的任何参数都不会用于指定类,但最终会传递给传递给main方法的String数组。

所以,如果你有一个正确构造运行的JAR文件,它应该只是

java -jar sample.jar 
+0

感谢蒂洛,如何在建设罐子时指定清单文件入门级? – user972590

+0

'主类:com.app.Test' http://download.oracle.com/javase/6/docs/technotes/guides/jar/jar.html#JAR%20Manifest – Thilo

+0

或者,使用Maven(也可捆绑在所有的依赖,这是你想要的东西):http://stackoverflow.com/questions/2022032/building-a-runnable-jar-with-maven-2 – Thilo