好吧,我已经按照 Java 教程创建了一个 JAR 文件,甚至创建了它附带的 Manifest.txt。我非常困惑,我到了在命令提示符下运行 JAR 的地步,但它并没有引用我在主程序中使用的其他类。
我有两个正在使用的 .class 文件,javagame.class
和 sound.class
。
它最终加载了主类,但是当它需要引用 sound.class
文件时,它说它不存在,一个 NoClassDefFoundError
然后我在 cmd 提示符下做了 'jar cfm myjar.jar Manifest.txt javagame.class sound.class'
jar cfe app.jar javagame javagame.class
最后,我执行了 java -jar app.jar
来运行 JAR,但出现了上面的错误,它找不到 sound.class 文件。
有人请帮助我非常困惑。
最佳答案
考虑 .java 和 .class 文件的目录结构:
HelloWorld(root directory)
|
|\src\HelloWorld.java
|
|\classes\mypackage\HelloWorld.class
HelloWorld.java 看起来像
package mypackage;
public class HelloWorld {
public static void main(String[] args){
System.out.println("Hello World");
}
}
要编译并获取类文件夹中的类文件,请使用 javac 中的 -d
选项
喜欢:
F:\HelloWorld\src>javac -d ../classes HelloWorld.java
添加所有可以使用 *.java 的 .java 文件
要创建 HelloWorld 的可执行 jar,请从类目录执行以下命令:
F:\HelloWorld\classes>jar cfe HelloWorld.jar mypackage.HelloWorld mypackage/HelloWorld.class
在 jar 命令之后,选项 cfe 表示:
- c:表示要创建一个JAR文件。
- f:表示您希望输出到文件而不是标准输出。
- e:覆盖 list 的 Main-Class 属性。
最后,要运行生成的 jar 文件,请执行以下命令:
F:\HelloWorld\classes>java -jar HelloWorld.jar
输出:HelloWorld
假设,如果你想指定你自己的 manifest.mf 文件,那么去
jar cfm MyJar.jar Manifest.txt mypackage/*.class
关于java - 创建 JAR 文件并在命令提示符下使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21950483/