我有一个构建设置,要求将我的类放入当前目录的子目录中的文件夹中。 I.E.,如果我在'。',那么课程可以在'./somewhere_else /'
问题在于,当我这样做时,我无法为可以找到主类的Main-Class设置一个值。当我从'。'文件构建jar时没有问题,但是对于主类的所有以下尝试都会导致java.lang.NoClassDefFoundError:
Main-Class: ClassName
Main-Class: FolderName.ClassName
Main-Class: FolderName/ClassName
我应该使用什么?
答案 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
顺便说一句,它们区分大小写。