为什么我得到这个"无法访问jarfile"我尝试执行我的jar时出错?

时间:2015-02-13 09:43:21

标签: java jar jvm executable-jar

尝试将jar文件(从我的项目创建)执行到Windows shell(DOS提示符)时,我遇到以下问题。

我有一个名为 Main.jar 的文件。如果我解压缩此文件,它包含一个 mainPkg 文件夹(这是包含 Main 类的包的名称,该类本身包含 main()法)。

因此,在 mainPkg 文件夹中,有 Main.class 文件,其中包含 main()方法。

好的,从shell开始,我进入包含 Main.jar 的目录,然后执行:

C:\Projects\edi-sta\build\jar>java -jar mainPkg.Main.jar
Error: Unable to access jarfile mainPkg.Main.jar

但是你可以看到我获得无法访问jarfile mainPkg.Main.jar 。为什么?我错过了什么?如何解决此问题并执行 Main.jar 文件?

2 个答案:

答案 0 :(得分:3)

在jar中执行包含main方法的类的语法是:

java -classpath <jarFile> <class>

在你的情况下:

java -classpath Main.jar mainPkg.Main

如果要使用java -jar执行jar,则必须创建可执行jar文件。这可以通过不同的方式完成,具体取决于您使用的构建工具。

答案 1 :(得分:2)

基本上你有两种类型的JAR

  • 普通JAR - 将您的课程打包成一个档案
  • Runnable JAR - 这与普通jar类似,只是您可以使用java -jar命令运行此命令,例如java -jar RunnableMain.jar。 在这个中我们已经配置了具有main()的类,因此不需要在jar命令
  • 中传递类名

假设你的是一个普通的JAR,你可以像这样执行你感兴趣的课程

C:\Users\arkantos\work>java -classpath C:\Project\Main.jar mainPkg.Main

请注意,我已经提到了将JAR添加到类路径的绝对路径,因为我在不同的目录中,如果没有,你可以cd到包含你的Main.jar和然后像这样调用你的Main类

C:\Project>java -classpath Main.jar mainPkg.Main

此处Main.jar位于Project目录中,因此无需提供绝对路径