0

我在 C 盘中创建了一个名为“Thank”的文件夹,在该文件夹中,我有 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
4

3 回答 3

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");
   }
}

清单.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

^^^ 它有效;-)

于 2013-06-18T07:22:48.340 回答
0

尝试键入: java.exe -jar "(jar 的完整路径)"

例如:java.exe -jar "C:\TestFolder\Project Java\myApp.jar"

于 2013-06-18T07:21:10.190 回答
0

几件事:

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

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

于 2013-06-18T07:23:58.233 回答