【发布时间】:2018-04-30 15:52:29
【问题描述】:
我正在运行带有 IntelliJ Idea 社区版的 Ubuntu 16.04 LTS。
完成我的桌面应用程序后,我希望导出以作为独立应用程序运行。我已经安装了 JRE9。
遵循this video 中的 60 秒快速教程,这也与 IntelliJ 网站教程相同。
所以我转到项目结构、工件、添加、转到 JavaFX 选项卡,选择主类,好的,构建工件,打开包含文件夹并...
双击 .jar 文件说它不可执行,所以我chmod +x file.jar 使其可执行,但仍然无法运行。
所以在终端中,我转到目录并输入 java -jar file.jar 但上面写着 Error: Could not find or load main class sample.Main。
但是我已经在 Artifact 窗口中选择了主类。
任何想法如何解决这个问题?谢谢。
更新
我的目录/文件/文件内容结构如下:
WorkingDirectory
Myjar.jar
META-INF
MANIFEST.MF
Manifest-Version: 1.0
Created-By: JavaFX Packager
Main-Class: sample.Main
Class-Path:
Permissions: sandbox
JavaFX-Version: 9.0.4
sample
Main.class
public static void main(String[] args) { launch(args); }
MyLib1.jar
MyLib2.jar
我也有.jar 文件
【问题讨论】:
-
这不是文件权限问题。这是java无法使用
sample.Main作为程序入口点的问题。此类是否包含具有正确签名的main方法? -
@fabian
.jar文件包含一个名为sample的文件夹,其中有一个名为Main.class的类文件。为了进一步调查,我将.jar文件提取到常规目录结构中,并直接导航到sample文件夹,java Main.class甚至不会执行。所以我做了一些挖掘。也许是因为sample.Main找不到我正在使用的两个库?因此,在 Project Structure / Artifact 文件夹中,我双击右侧的所有.jar依赖项,然后它们出现在我的构建.jar文件中,并重新构建。但这也不起作用。 -
您可以执行
javap -v Main.class | find "public static void main"之类的操作来检查该类中的主要方法(或简单地查看源代码)...无法加载引用的类应该会导致错误提示无法加载的类... -
@fabian 如果我在提取的目录结构中键入
javap -v Main.class | find "public static void main",在sample内,它会显示find: ‘public static void main’: No such file or directory:-/ ...但在我的Main.java文件中肯定有以下函数:public static void main(String[] args) { launch(args); }
标签: intellij-idea javafx executable-jar artifact