java - 创建 JAR 文件并在命令提示符下使用?

标签 java jar cmd

好吧,我已经按照 Java 教程创建了一个 JAR 文件,甚至创建了它附带的 Manifest.txt。我非常困惑,我到了在命令提示符下运行 JAR 的地步,但它并没有引用我在主程序中使用的其他类。

我有两个正在使用的 .class 文件,javagame.classsound.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 表示:

  1. c:表示要创建一个JAR文件。
  2. f:表示您希望输出到文件而不是标准输出。
  3. 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/

相关文章:

java - 如何在 javafx 代码中添加 Anchorpane 约束?

java - Selenium - WebDriver 无法识别元素,但 IDE 可以识别相同的元素

java - 具有 Or 条件的正则表达式?

java - 在 Django 中执行 java 应用程序 (.jar)

c# - 无法从 cmd 获取输出

java - 重新启动在远程计算机上运行的远程 tomcat?

java - 白色边框以及 "LinearLayout"中的透明度

java - 为什么 jar 文件在通过双击启动时没有从磁盘读取的权限 - 但如果从终端启动则没有?

java - 如何在vscode中使用相对路径为eclipse Java项目添加引用的库JAR文件

windows - 如何用行号替换任何行?