Main-Class无法设置为现有类

时间:2011-02-06 02:12:11

标签: java jar manifest

我有一个构建设置,要求将我的类放入当前目录的子目录中的文件夹中。 I.E.,如果我在'。',那么课程可以在'./somewhere_else /'

问题在于,当我这样做时,我无法为可以找到主类的Main-Class设置一个值。当我从'。'文件构建jar时没有问题,但是对于主类的所有以下尝试都会导致java.lang.NoClassDefFoundError:

Main-Class: ClassName
Main-Class: FolderName.ClassName
Main-Class: FolderName/ClassName

我应该使用什么?

3 个答案:

答案 0 :(得分:1)

jar中的类必须与包结构位于同一目录结构中。

  • 所以,如果你想让你的班级ClassName(没有任何包)成为主类,它必须在你的jar的根目录中。
  • 如果要将类放在目录FolderName中,则该名称必须是包名称,这意味着源文件的第一行(非空非注释)行应为{{1 }}。

如果您的问题只是构建设置 - 这不是问题,那么jar外部目录的文件夹布局不一定必须与jar中的布局相同。但是如果文件夹结构适合包结构(可能还有上面的目录),它仍然有用。

答案 1 :(得分:0)

我认为你应该只通过类名引用Main-Class(没有目录结构)。什么可以帮助您解决这个问题是你作为类路径。确保Main-Class的目录在类路径中。

答案 2 :(得分:0)

如果您的ClassName位于包FolderName中,那么它应该是: -

Manifest-Version: 1.0
Main-Class: FolderName.ClassName
Class-Path: <third-party>.jar <another-third-party>.jar

顺便说一句,它们区分大小写。