我有一个构建设置,要求将我的类放入当前目录的子目录中的文件夹中。 IE.E.,如果我在“。”,那么这些类可以在“ ./somewhere_else/”中
问题是当我这样做时,我无法为可以找到主类的Main-Class设置值。当我从'。'中的文件构建jar时,我没有问题,但是对主类的以下所有尝试均导致java.lang.NoClassDefFoundError's:
Main-Class: ClassName
Main-Class: FolderName.ClassName
Main-Class: FolderName/ClassName
我应该使用什么?
最佳答案
jar中的类必须与包结构位于同一目录结构中。
因此,如果要让类ClassName
(不带任何包)成为主类,则它必须位于jar的根目录中。
如果要将类放在目录FolderName
中,则必须使用相同的名称作为程序包名称,这意味着源文件的第一行(非空非注释)应为package FolderName;
。
如果您的问题只是构建设置-这不是问题,那么jar外部目录的文件夹布局不必与jar内的布局相同。但是,如果文件夹结构适合包结构(上面可能还有其他目录),仍然会有所帮助。
关于java - 主类别不能设置为现有类别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4911065/