2017-07-06 89 views
-1

所以我有以下项目结构: 我有一个名为“com.github.liketechnik”包。我的主类是Build in这个包(“com.github.liketechnik.Build”)。JAR文件 - 主类未找到

我编程把编译的类从那里进入一个jar文件有正确的表现,如G。包含一个版本属性和一个Main-Class条目“com.github.liketechnik.Build”。 jar内的类包含在“com/github/liketechnik/Build.class”下。

运行java -jar output.jar时,它直接失败:“Error:Mainclass com.github.liketechnik.Build could not be found or loaded”(德语翻译)。当直接通过java -cp build/main com.github.liketechnik.Build(例如直接在jar外部的类文件)运行这个类时,它无需工作。

我想这个小时,也搜索了错别字每一个文件,所以我感谢所有帮助这个问题,因为有关此类问题的其他线程没有与我的帮助。如果您直接需要更多信息或源代码,我将这个提供给您没有任何问题。

编辑:jar文件的新增结构。

JAR文件具有以下结构:

  • 一个目录 “META-INF” 含有 “MANIFEST.MF” 与提及的条目。

  • 一个目录结构 “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(如预期) 从罐子运行时的输出:Fehler: Hauptklasse com.github.liketechnik.Build konnte nicht gefunden oder geladen werden(为什么?)

+0

JAR文件的结构是什么样的?您可以用任何ZIP工具打开它。 –

+0

编辑我的答案显示结构。我也检查了这个文件,这似乎也正确的我。 – liketechnik

+0

而不是描述文件的内容(如清单),只是**通过直接复制和粘贴显示**。你不一定要粘贴整个东西,但显示相关的部分比单独的英文描述更有帮助。 –

回答

0

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

例: 假设你有目录abb包含文件test.classtoll.class,你必须先添加a,然后b然后将文件内b。否则它将无法工作。