通过cmd执行jar文件

时间:2013-06-18 07:18:08

标签: java jar

我创建了一个名为&#34的文件夹;感谢"在c盘和该文件夹中,我有2个java文件,即T1和myApp。

class T1 { 
    void display() {
        System.out.println("Hey I am working");
    }
}

class myApp {
    public static void main(String args[]) {
        T1 t=new T1();
        t.display(); 
    }
}

现在我通过以下方式创建了此文件夹的jar文件:

 c:\>jar cf myApp.jar Thank

这会创建一个名为myApp的Jar文件。

我甚至写过Main-Class: myApp in the manifest.mf file

当我尝试通过以下方式运行时:

c:\>java -jar myApp.jar

我收到错误 -

  

尝试打开文件时发生意外错误   myApp.jar

请告诉我如何运行jar文件,以便获得输出:

Hey I am working

3 个答案:

答案 0 :(得分:2)

您应该使用jar cfm myApp.jar manifest.txt *.class来创建jar,以便清单文件在jar中正确定位。

清单的正确位置是META-INF/MANIFEST.MF

更新

我已经让你的代码工作了,基本上是通过你准备好的文件;将包声明添加到java文件和清单中,并从myApp上包装MyApp类。文件以这种文件夹结构排列:

tbsmac:17162802-executing-java-file-through-cmd tbsalling$ ls -lR
total 0
drwxr-xr-x  3 tbsalling  staff  102 19 Jun 18:48 META-INF
drwxr-xr-x  4 tbsalling  staff  136 19 Jun 18:57 thank

./META-INF:
total 8
-rw-r--r--  1 tbsalling  staff  46 19 Jun 18:49 MANIFEST.MF

./thank:
total 16
-rw-r--r--  1 tbsalling  staff  124 19 Jun 18:49 MyApp.java
-rw-r--r--  1 tbsalling  staff   98 19 Jun 18:48 T1.java

三个文件的内容是:

<强> MyApp.java:

package thank;

class MyApp {
    public static void main(String args[]) {
      T1 t=new T1();
      t.display(); 
    }
}

<强> T1.java:

package thank;

class T1 { 
   void display() {
    System.out.println("Hey I am working");
   }
}

<强> MANIFEST.MF:

Main-Class: thank.MyApp
Manifest-Version: 1.0

然后我运行这一系列命令:

tbsmac:17162802-executing-java-file-through-cmd tbsalling$ javac thank/T1.java thank/MyApp.java 
tbsmac:17162802-executing-java-file-through-cmd tbsalling$ jar cfm myApp.jar META-INF/MANIFEST.MF thank/*.class
tbsmac:17162802-executing-java-file-through-cmd tbsalling$ java -jar myApp.jar 
Hey I am working

^^^并且它有效; - )

答案 1 :(得分:0)

尝试输入:java.exe -jar“(jar的完整路径)”

示例:java.exe -jar“C:\ TestFolder \ Project Java \ myApp.jar”

答案 2 :(得分:0)

一些事情:

  1. 确保在清单文件中添加完整的类名和包名。

  2. 还要确保在jar清单文件的末尾添加换行符。如果不这样做。