繁体   English   中英

罐子找不到主班

[英]Jar Can't Find Main Class

我得到: Could not find the main class: org.dav.kin.Tester. Program will exit. Could not find the main class: org.dav.kin.Tester. Program will exit. 当我尝试通过java -jar tester.jar java -classpath tester.jar org.dav.kin.Tester运行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任何人都知道我为什么拥有明确地重述类路径(或更准确地说,是Groovy jar)?

以防万一。 我只是解决完全相同的问题。 代替

Class-Path: .

MANIFEST.MF

一个应该枚举运行时所需的jar( 带空格 ),因此它应该是这样的:

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

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

/org/dav/kin/Tester.class

或者您的MANIFEST.MF文件中包含特殊字符

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

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

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

您已经表明您正在使用Groovy。 Groovy确实可以编译为Java类文件,但是仍然需要groovy运行时库。 您需要确保groovy以及类都在类路径中。 尝试这个:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM