Jar 文件 - 未找到主要 class

Jar File - main class not found

所以我有以下项目结构: 我有一个名为 "com.github.liketechnik" 的包裹。我的主要 class 是 Build in this package ("com.github.liketechnik.Build")。

我以编程方式将编译后的 classes 从那里放入具有正确清单的 jar 文件中,e。 G。包含版本属性和 Main-Class 条目 "com.github.liketechnik.Build"。 jar 中的 classes 包含在 "com/github/liketechnik/Build.class" 下。

运行java -jar output.jar时直接失败:"Error: Mainclass com.github.liketechnik.Build could not be found or loaded"(翻译自德文)。当 运行 class 直接通过 java -cp build/main com.github.liketechnik.Build 时(例如 class 文件直接在 jar 之外),它可以正常工作。

我试了几个小时,还搜索了每个文件中的拼写错误,所以我很感激对这个问题的任何帮助,因为所有其他关于此类问题的线程都没有帮助我。如果您需要更多信息或直接获取源代码,我可以毫无问题地提供给您。

编辑: 添加了 jar 文件的结构。

jar 文件具有以下结构:

清单:

Manifest-Version: 1.0
Main-Class: com.github.liketechnik.Build

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(为什么?)

好的,似乎以编程方式创建 .jar 存档并不像看起来那么容易。似乎在 .zip 规范下需要处理 (see this question) 是另一个警告,因此需要在目录层次结构之后添加条目。

示例: 假设您有目录 abb 包含文件 test.class toll.class,您必须先添加 a,然后添加 b 然后是 b 中的文件。否则它不会工作。