0

所以我有以下项目结构:我有一个名为“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为什么?)

4

1 回答 1

0

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

示例:假设您有目录,a并且包含文件,您必须先添加,然后再添加里面的文件。否则它将无法正常工作。bbtest.class toll.classabb

于 2017-07-08T11:24:29.753 回答