【问题标题】:jar file execution from cmd prompt从 cmd 提示符执行 jar 文件
【发布时间】:2013-07-01 22:45:26
【问题描述】:

我彻底检查了这个,标准答案对我不起作用。

每当我尝试从 cmd 提示符执行 jar 文件时,它不会打开 jar 文件,而是打开 Dr. Java 的新窗口。

我使用DrJava的“Create custom drjava jar”创建了一个名为“TestJar.jar”的jar文件,包括:

Manifest.txt:

主类:com.package.name.TestJar 类路径:algs4.jar

TestJar.java:

public class TestJar
{
 public static void main(String[] args)
 {
  System.out.println("Hello");  
  StdOut.println("hello StdOut");
 }

}

我在 cmd 提示符下输入这个:

java -jar TestJar.jar

然后 DrJava 打开一个新窗口。有任何想法吗?我尝试从 cmd 提示符创建 jar 文件,但我输入的所有以“jar”开头的命令都会出现此错误:

'jar' 不是内部或外部命令,可操作 程序或批处理文件。

任何帮助将不胜感激...我对 Java 还是很陌生。

【问题讨论】:

  • 使用标准 JRE,您需要像 java -jar TestJar.jar TestJar 这样的语法。另外:如果“jar 无法识别...”,那么听起来您需要将 Java 目录添加到 %PATH% ;)
  • 还要确保 Main-Class 和 Class-Path 在不同的行上。并且不要忘记在清单文件的最后一行之后按回车键(以获得正确的 EOL)。
  • @paulsm4 使用语法 java -jar TestJar.jar TestJar 它不会做任何事情...没有错误消息,但也不会打开 DrJava 的实例。主要方法是 system.out.println()。我应该在命令提示符下看到,对吧?
  • @Usman,谢谢,但我做了那些事情。这里的评论者不保存换行符。

标签: java jar


【解决方案1】:

您遇到的问题是jar 程序不在您的%PATH% 中。您可能会发现 this answer 很有帮助。

【讨论】:

  • 我尝试在 PATH 变量中添加各种内容。但我实际上在我的电脑上找不到jar程序。是jar.exe吗?
  • @EricWalton 是的,它是jar.exe。你知道java.exe 在哪里吗? jar.exe 程序应该在同一个文件夹中。
  • java.exe 也放在C:\Windows\System32 中,如果我没记错的话,但是在安装目录的bin 文件夹中有一个java.exe。尝试寻找像C:\Program Files\Java\jdk_[version]\bin 这样的文件夹。如果您有 32 位版本,它将位于 Program Files (x86)
  • jar 程序是 JDK 的一部分,而不是 JRE,它用于创建/修改/测试 jar,而不是运行它们。
  • 谢谢,这最终成为解决方案的一部分。最终能够从 cmd 行指向 jar,但只能在设置路径变量之后。
【解决方案2】:

Java 使用manifest 确定main 函数的位置。如果您解压缩 jar 文件,您将在 META-INF 文件夹中看到清单文件。 (jar 文件只是一个 zip 文件,具有不同的扩展名和一些特定的文件。)

您的清单中需要这样的条目:

Main-Class: packagename.classname

有关设置main 位置的更多详细信息,请参阅here

要控制 Dr. Java 中的清单,我认为您需要创建一个自定义清单。 This source 提供这些说明:

要对 jar 的属性进行更多控制,您可以输入 通过选择“自定义清单”并按“编辑”来自定义清单 清单”按钮。

【讨论】:

  • 这是我包含的清单文件: Main-Class: com.package.name.TestJar 这是错误的语法吗?我不确定包名是什么。
  • 你必须声明包并设置文件夹结构以匹配:docs.oracle.com/javase/tutorial/java/package/packages.html 所以如果你想你的代码在一个名为mypack的包中,创建一个名为mypack的文件夹,把文件夹内的TestJar.java代码文件,并将package mypack语句放在代码文件的最顶部。 Java 7 不支持未打包的代码文件。那么你的清单应该有Main-Class: mypack.TestJar。您可能不得不摆弄 Dr. Java 才能使包正常工作,但 mypack 文件夹应该在 jar 文件中的 META-INF 旁边。
  • 我刚试过。它没有任何区别。你对 DrJava 有什么建议?
【解决方案3】:

1) 从 Windows 命令运行您的测试 jar:

a) 确保您的 PC 上安装了 Java

b) 设置您的 %JAVA_HOME%(例如:set JAVA_HOME=c:\Program files\java\jre7)

c) 更新您的 %PATH% (EX: PATH=c:\Program 文件\java\jre7\bin;%PATH%)

d) 使用“java -jar JARFILE MAIN-CLASS”调用程序(例如:java -jar TestJar.jar TestJar)

2) 要在 Windows 上运行 DrJava .jar,我只需在 Windows 资源管理器中双击 .jar 文件

3) 要测试和调试您的程序,我将只使用 DrJava(而不是从命令行)。

4) 您确实需要安装“jar.exe”来运行.jar 文件。您只需要它来查看、修改或创建 .jar。 jar.exe 是 Java JDK 自带的。

5) 我怀疑您可能需要 Java JDK 来使用 DrJava 构建或调试任何程序。

如果您需要更多帮助,这里有一个关于从 Windows 运行 .jar 文件的好链接:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-21
    • 2018-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多