如何打开JavaFX的.jar文件与JDK 11?

DrMorteza:

我创建了一个的IntelliJ JavaFX项目。我可以在运行的IntelliJ项目。我在下面的配置代码):

--module-path ${PATH_TO_FX} --add-modules=javafx.controls,javafx.fxml

但是,项目的输出.jar文件(与Artifects制造)不运行。我测试了这些命令,但没有得到任何机会:

java  --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.fxml -jar Timer.jar
java  --module-path %PATH_TO_FX% --add-modules javafx.controls  Timer.jar

命令行的最后一个错误日志:

Error: Could not find or load main class Files\Java\javafx-sdk-11.0.1\lib
Caused by: java.lang.ClassNotFoundException: Files\Java\javafx-sdk-11.0.1\lib

PS:我可以在JDK-10运行这个项目时构建的.jar文件

编辑

我下载JavaFX和增加它的lib文件夹中的系统环境。添加JavaFX的项目我做了这个过程:项目结构>库>添加>的Java> JavaFxPath / lib目录

然后,我在这个过程中产生Artifect输出jar文件:项目结构> Artifects>添加> JAR>从模块具有依赖性>主要类别:main.Main。

何塞佩雷达:

提供您有一个简单的(非模块化)JavaFX的11项目(不含Maven的/摇篮构建工具),以及你使用的是IntelliJ,就像从HelloFX样品在这里,这是你如何创建的IntelliJ一个罐子,可以从运行控制台

有关如何运行该项目的完全手册,可以发现在这里,并就如何创建一个罐子说明这里(见非模块化的项目),但这些并不包括Artifacts来自的IntelliJ。

检查从在的IntelliJ项目HelloFX运行这些VM选项:

--module-path ${PATH_TO_FX} --add-modules javafx.controls,javafx.fxml

这里PATH_TO_FX已经设置File -> Settings -> Appearance & Behavior -> Path Variables,指向的JavaFX SDK库。

肥罐

我们可以创建一个只包含从项目中的类,以及第三方的依赖,但不是JavaFX的那些一个罐子。

File -> Project Structure -> Artifacts -> Add -> JAR -> From modules with dependencies,添加您的主类,接受。

然后取出JavaFX的罐子从列表中,并接受。

SemiJar

生成项目,它会创建一个非常小罐子(3 KB在这种情况下)。

现在,你应该能够像运行:

java --module-path %PATH_TO_FX% --add-modules javafx.controls,javafx.fxml -jar out\artifacts\HelloFX_jar\HelloFX.jar

(请确保%PATH_TO_FX%指向有效的文件夹,并用引号如果包含空格。

您可以分发这个jar,而在其他平台上运行,提供这些还有了JavaFX SDK。

发罐

如果你想有一个完整的脂肪罐子,其中包括JavaFX的依赖关系,你仍然可以使用文物。

File -> Project Structure -> Artifacts -> Add -> JAR -> From modules with dependencies,添加您的主类,接受。

Then keep the JavaFX jars from the list, and accept. Build the project.

In theory, you should be able to run it like:

java -jar out\artifacts\HelloFX_jar\HelloFX.jar

But this won't work.

Reason 1: You need a launcher class, as explained here.

So create a launcher class:

public class Launcher {

    public static void main(String[] args) {
        Main.main(args);
    }
}

Reason 2: If you only add your SDK jars to the fat jar, you will be missing the native libraries, as explained here.

So edit the artifact, select the Launcher class as main class, and add the native libraries (Directory Content -> path-to/JavaFX SDK/bin on Windows):

发罐

Now build the project (now the jar is about 33 MB, and contains unnecessary native libraries) and run:

java -jar out\artifacts\HelloFX_jar\HelloFX.jar

You can distribute this jar, but only to Windows platforms.

您可以在其他平台上创建类似的罐子,如果你下载他们的JavaFX SDK和你也可以建立跨平台的罐子,如果你把他们叠加在一起,在上面的链接的答案解释。

无论如何,你应该考虑使用jlink 替代

注意

关于此错误:

抛出java.lang.ClassNotFoundException:由造成文件\ Java的\ JavaFX的SDK-11.0.1 \ LIB

它看起来像被设置不带引号库路径和它缺少路径的第一部分C:\Program Files\...只要确保你使用引号:

set PATH_TO_FX="C:\Program Files\Java\javafx-sdk-11.0.1\lib"

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Ubuntu下安装JDK 11?

与JDK运行JavaFX应用程序11+

用的OpenJFX上JDK 11运行的JavaFX样品上模块路径11个JMODS

春季启动2.1.5 Java的11个模块,错误组装JAR:无法创建模块化的JAR文件。JDK的jar工具退出,1 - > [帮助1]

11 JDK和JavaFX 11:构建ARM(廷克局)不运行(哈希不匹配)

JDK11 / JavaFX的:如何让我不构建/ depdency管理脂肪罐子?

如何选择JDK 10或11的IntelliJ IDE?

Windows上的Oracle JDK安装11&JAR文件关联

javax.smartcardio。*不上打开JDK 11中(红帽)

如何阅读与JDK 11堆状态?

如何将JavaFX 11项目导出到Jar中?

安装jdk11后无法打开Eclipse

如何在Heroku中将JDK 1.8更改为JDK 11?

如何在Eclipse中打开jar文件

Java JDK 11版本与JavaFX的兼容性

如何使用JDK 11 java.net.http.HttpClient上传文件?

使用JDK 11在Mac上打开.jar文件失败并显示RuntimeException

JavaFX 11不适用于JDK 11,IntelliJ想法

如何使用NetBeans 10打包javafx11 / jdk11应用程序

JavaFX 11:使用Gradle创建一个jar文件

如何使用pdfkit iOS 11打开pdf文件?

带有JavaFx 11和JDK 11的Netbeans 9.0

如何在jdk11中使用JavaFX?

如何打开.plist文件作为源代码xcode 11 beta 5

在Xcode 11中,如何在新标签页或新窗口中快速打开文件?

如何为打开的JDK11设置JAVA_HOME和JRE_HOME变量

如何停止让IE11问我是否要保存或打开.flv文件?

如何使用特定的 jdk 打开 .jar?

如何使用 openjdk-11-jdk 安装 JavaFX?

TOP 榜单

热门标签

归档