我创建了一个名为&#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
答案 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)
一些事情:
确保在清单文件中添加完整的类名和包名。
还要确保在jar清单文件的末尾添加换行符。如果不这样做。