Javapackager:无法找到或加载主类

10
我创建了一个JavaFX项目,并可以使用以下命令运行它:
java -classpath [very-long-list-of-class-paths] danIDE.Main
但是,当我尝试使用javapackager将其打包成jar文件并使用java -jar out.jar运行时,提示出现错误:
Error: Could not find or load main class danIDE.Main
我用以下命令创建jar文件:
javapackager -createjar -v -classpath [very-long-list-of-class-paths] -srcdir src -outfile out -appclass danIDE.Main
我已经在这个问题上搜索了很长时间,但仍然找不到解决方案。有人能指点我正确的方向吗?非常感谢!
编辑:这是项目结构。

Project Structure

这里是已解压的 jar 包。

enter image description here

根据 @Garry 的要求,提供了新的爆炸式 jar 包:

enter image description here


我明白了,我正在尝试重现你的错误。 - mazhar islam
@Arvind 我应该在那里放danIDE的路径还是它的父路径? - Tengyu Liu
这可能会有所帮助:http://stackoverflow.com/questions/21793628/why-error-could-not-find-or-load-main-class-addstudent-addstudent-is-showing - user4580220
为什么解压后的jar包中包含.java文件?它们不应该是已编译的.class文件吗? - jackrabbit
1
你好,你找到任何解决方案了吗?我也有同样的问题。 - Bahramdun Adil
显示剩余6条评论
2个回答

4

由于您正在使用IntelliJ IDEA,我建议您让IDEA为您创建JAR文件。

首先,打开模块设置窗口:

enter image description here

然后,添加一个新的构件:

enter image description here

选择具有依赖关系的模块中的 JAR:

enter image description here

在窗口中选择主类,并决定是否要将依赖JAR中的所有类重新打包到您的JAR中(提取到目标JAR选项),或者是否要将它们与您的JAR一起分发(复制到输出目录并通过清单链接选项):

enter image description here

如果您希望每次构建项目时都构建它(这可能是个好主意),请勾选该复选框:

enter image description here

当您下一次制作项目时,JAR 文件将显示在 out/artifacts 下:

enter image description here

如果您在构建项目时没有勾选构建JAR文件的复选框,您可以通过“构建”菜单中的“构建工件”选项来构建JAR文件。请注意不要删除HTML标签。

我尝试了你的解决方案,但在运行jar文件时出现了以下错误:错误:发生了JNI错误,请检查您的安装并重试 - Tengyu Liu
你有哪些依赖关系? - Raniz

2

您可以尝试使用以下命令,确保更新“classes”文件夹到要打包的文件的基本目录。

正如您在问题中所说,您能够运行danIDE.Main,因此我假设所有必需的类都可在dist文件夹中找到。 因此,在与dist平行的项目中创建一个名为out的文件夹。

javapackager -createjar -classpath [very-long-list-of-class-paths] -appclass danIDE.Main -srcdir dist -outdir out -outfile out.jar -v 

根据上传的截图进行更新:将-srcdir指向dist,现在生成的jar包out.jar将被放置在out/out.jar中。

@TengyuLiu可以分享你的项目结构和已解压的jar包内容的截图吗? - Garry
我已经上传了屏幕截图。如果您需要其他任何东西,请告诉我。 - Tengyu Liu
@TengyuLiu .. 我已根据上传的截图更新了答案。 - Garry
让我们在聊天室中继续这个讨论 - Tengyu Liu
@TengyuLiu,你能够像你说的那样运行它吗?因为danIDE.Main在Dist.jar中,所以你需要将dist.jar包含在你冗长的类路径列表中。 - Garry
显示剩余5条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接