0
java -jar <Name of executable jar>

导致我的 1.6 jvm 返回NoClassDefFound'jar' 错误。为什么它不被认为-jar是一个选项而不是一个要运行的类?

jar 结构:manifest 将 Main-Class 指向 com.mycompany.EntryPoint.class,它位于 jar 内部。它也指定了 Ant-Version 并且我没有设置 ANT_HOME 环境变量(在 Windows 上运行)。

确切的运行时错误:

Exception in thread "main" java.lang.NoClassDefFoundError: ûjar
caused by java.lang.ClassNotFoundException: ûjar
...

显现:

Manifest-Version: 1.0
Ant-Version: Apache Ant 1.8.1
Created-By: [redacted]
Main-Class: com/mycompany/EntryPoint

编辑:不知道为什么,但我又试了一次,这次它按预期执行了 jar。

4

3 回答 3

2

您用于 '-jar' 标志的 '-' 字符可能不是标准的 ASCII '-' 符号,而是某种 UTF-8 特殊字符。

删除它并用正常的 ASCII '-' 符号替换它。

于 2013-05-18T17:21:23.823 回答
2

该错误来自命令行中的错误字符。你肯定是在复制和粘贴java -jar <Name of executable jar>

手动编写;)

于 2013-05-18T17:22:08.080 回答
0

您需要检查几件事:

  1. 检查清单文件是否存在于您的 jar META-INF 目录中
  2. 如果清单文件存在,那么它是否包含有关您调用 java -jar 时需要运行的主类的详细信息。清单文件应如下所示:

清单版本:1.0

Main-Class:包含 main 的类的名称

确保在 Manifest.mf 的最后一行之后有一个换行符。

于 2013-05-18T16:57:07.840 回答