Jar无法找到主类

时间:2011-06-23 20:11:35

标签: java groovy

当我尝试通过Could not find the main class: org.dav.kin.Tester. Program will exit. java -jar tester.jar运行我的jar文件时,我得到:java -classpath tester.jar org.dav.kin.Tester有谁知道错误以及如何修复它?以下是其他详细信息。感谢。

清单文件:

Manifest-Version: 1.0
Created-By: DKin
Class-Path: .
Main-Class: org.dav.kin.Tester

jar tf tester.jar

org/
org/dav/
org/dav/kin/
org/dav/kin/Tester.class
org/dav/kin/TesterCellRenderer.class
...
...
META-INF/
META-INF/MANIFEST.MF

更新

如果我指定包含groovy-all-{version}.jar的系统类路径,就会运行Jar文件,如下所示:java -classpath tester.jar;"%CLASSPATH%" org.dav.kin.Tester任何人都知道为什么我必须显式重新声明类路径(或者更准确地说,是常规jar )?

4 个答案:

答案 0 :(得分:0)

您的jar文件缺少具有此名称的文件

/org/dav/kin/Tester.class

或您的MANIFEST.MF文件中有特殊字符

MANIFEST.MF文件具有特定语法。最好使用其他工具来生成它们;但是我遇到的一些细节增加了手写文件的成功,包括:

  1. 始终确保行长度少于72个字符。
  2. 始终使用\ r \ n(windows换行符),即使在非Windows系统上也是如此。
  3. 验证所有空格字符都是空格。
  4. 确认没有不可打印的字符(htab等)。
  5. 有时文件末尾的空白行有帮助。

答案 1 :(得分:0)

是Tester.class'包声明org.dav.kin吗?

答案 2 :(得分:0)

您已表明您使用的是Groovy。 Groovy确实编译为Java类文件,但它仍然需要groovy运行时库。你需要确保groovy在类路径和类上。试试这个:

java -classpath tester.jar;groovy-all-1.8.0.jar org.dav.kin.Tester

答案 3 :(得分:0)

以防万一。我只是解决了同样的问题。 而不是

Class-Path: .
MANIFEST.MF

中的

应该枚举( with space )运行时需要的jar,所以它应该是这样的:

Class-Path: groovy-all-2.4.5.jar relative/my-dependent-project-artifact.jar