所以我有以下项目结构:我有一个名为“com.github.liketechnik”的包。我的主要课程是在这个包中构建(“com.github.liketechnik.Build”)。
我以编程方式将已编译的类从那里放入带有正确清单的 jar 文件中,例如包含版本属性和 Main-Class 条目“com.github.liketechnik.Build”。jar 中的类包含在“com/github/liketechnik/Build.class”下。
运行 java -jar output.jar
时直接失败:“错误:无法找到或加载 Mainclass com.github.liketechnik.Build”(翻译自德语)。直接通过java -cp build/main com.github.liketechnik.Build
(例如,直接在jar 之外的类文件)运行类时,它可以毫无问题地工作。
我尝试了这几个小时,还搜索了每个文件中的拼写错误,因此我感谢任何有关此问题的帮助,因为所有其他有关此类问题的线程对我没有帮助。如果您需要更多信息或直接源代码,我可以将其提供给您。
编辑:添加了 jar 文件的结构。
jar 文件具有以下结构:
一个包含“MANIFEST.MF”的目录“META-INF”和提到的条目。
一个目录结构“com/github/liketechnik/Build.class”(例如,也包含其他类(在子包中)。
显现:
Manifest-Version: 1.0
Main-Class: com.github.liketechnik.Build
构建.java:
package com.github.liketechnik;
public class Build {
public static void main(String[] args) {
System.out.println("Hi");
}
}
手动运行时的输出Hi
:(如预期)从 jar 运行时的输出:(Fehler: Hauptklasse com.github.liketechnik.Build konnte nicht gefunden oder geladen werden
为什么?)