java - Jar 找不到主类

标签 java groovy

我得到:找不到主类:org.dav.kin.Tester。程序将退出。 当我尝试通过 java -jar tester.jar java -classpath tester.jar org.dav 运行我的 jar 文件时.kin.Tester 有谁知道出了什么问题以及如何解决?以下是其他详细信息。谢谢。

list 文件:

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)?

最佳答案

您的 jar 文件缺少同名文件

/org/dav/kin/Tester.class

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

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

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

关于java - Jar 找不到主类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6460025/

相关文章:

java - RecyclerView 尽管存储了它,但仍丢失了复选框状态

java - 在 Java 中按名称设置变量

java - 与 Java 应用程序相比,Tomcat8 中的 JDBC 性能非常非常慢

java - Groovy 控制台不输出旧值

Jenkins 转义 sed 命令

java - groovy 脚本 eval(string) 方法的性能问题

java - 关于 if 和 else 语句的问题

java - 什么是更好的 Java Web 应用程序框架(请提出建议)?

java - 编写一个 gradle 脚本,将所有依赖项保存到 ${projectDir}/lib 文件夹中

java - 在运行时创建的外部groovy类中注入(inject)spring服务