不幸的是,该javapackager
工具将被JDK 11删除 - 因为它是JavaFX的一部分,它也将被删除.因此,不再有"官方"和简单的方法来为Mac或Windows创建本机Java应用程序包.
我试图重新使用Java 9/10的javapackager(在Mac上my.app/Contents/MacOS/my
)生成的本机启动器文件,它们似乎仍然可以与JDK 11一起使用.但这有点像一个肮脏的解决方案.有关如何使用Java 11及更高版本本地打包和启动应用程序的任何想法(首选Mac平台)?
JavaFX 11是否跨平台?正如我在openjfx.org中看到的,我必须为每个平台下载版本.如果是这样,我可以以任何方式以跨平台形式使用它吗?我应该为每个java版本使用每个javafx版本吗?不要告诉我使用maven或类似的东西.我想编写一个跨平台的软件.而且每个操作系统的每个版本都没有多版本软件.我在检查操作系统后加载模块但我可以这样做吗?任何方式都有很多跨平台的库,即使它有本机代码,为什么OpenJFX不这样做呢?
我似乎无法从 javaFX 应用程序生成跨平台构建。
\n当我从 IntelliJ 运行它时,它工作正常,如果通过 maven 打包它,我还可以在 Linux 上运行生成的 jar。
\n当我尝试在 Mac 上运行 jar 时出现问题,似乎不包含 JavaFX 库,然后我得到以下堆栈跟踪:
\nGraphics Device initialization failed for : es2, sw\nError initializing QuantumRenderer: no suitable pipeline found\njava.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found\n at com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)\n at com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:244)\n at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:261)\n at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)\n at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)\n at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)\n at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)\n at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)\n at java.base/java.lang.Thread.run(Thread.java:832)\nCaused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found\n at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)\n at com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)\n ... 1 more\nException in thread \xe2\x80\x9cmain\xe2\x80\x9d …
Run Code Online (Sandbox Code Playgroud) 我想使用 netbeans 迁移到 Java 11 和 JFX11。JFX11 必须用作模块,所以我添加了 JavaFX jars 并在默认包文件夹下的 module-info.java 中添加了以下内容。
requires javafx.controls;
requires javafx.base;
requires javafx.fxml;
requires javafx.graphics;
requires javafx.swing;
requires java.logging;
requires java.desktop;
requires java.sql;
requires java.xml;
Run Code Online (Sandbox Code Playgroud)
这导致我的所有其他依赖项显示“pacakges 'xyz' 不可见......(包 'xyz' 在未命名的模块中声明,但模块 'xyz' 不读取它)”当我尝试清理和9.在netbeans中构建
我不能混合模块和库吗?我错过了什么?
java javafx java-platform-module-system java-module javafx-11
我正在运行带有JDK 11.0.1的IntelliJ IDEA Ultimate 2018.2.5和来自OpenJFX的JavaFX 11.我知道这是一个常见的错误,我尝试了很多提议的修复,但没有任何作用.
无论我尝试运行哪个JavaFX项目,都会收到错误消息:
Error: JavaFX runtime components are missing, and are required to run this application
Run Code Online (Sandbox Code Playgroud)
如果我将以下内容添加到VM选项中
--module-path="C:\Program Files\Java\javafx-sdk-11\lib" --add-modules=javafx.controls
Run Code Online (Sandbox Code Playgroud)
我收到这些错误:
Exception in Application start method
java.lang.reflect.InvocationTargetException
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:464)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:363)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:566)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1051)
Caused by: java.lang.RuntimeException: Exception in Application start method
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:900)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Thread.java:834)
Caused by: java.lang.IllegalAccessError: class com.sun.javafx.fxml.FXMLLoaderHelper (in …
Run Code Online (Sandbox Code Playgroud) 我已经完全按照教程进行了操作,但似乎无法正常工作。本教程位于以下JavaFX and Intellij
Non-modular from IDE
部分中:https : //openjfx.io/openjfx-docs/#install-java
这是尝试运行默认的Intellij Idea JavaFX项目时收到的错误消息:
"C:\Program Files\Java\jdk-11.0.1\bin\java.exe" --module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml --add-modules javafx.base,javafx.graphics --add-reads javafx.base=ALL-UNNAMED --add-reads javafx.graphics=ALL-UNNAMED "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=53491:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Users\jonat\IdeaProjects\Tawe-Lib FX\out\production\Tawe-Lib FX;C:\Program Files\Java\javafx-sdk-11.0.1\lib\src.zip;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx-swt.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.web.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.base.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.fxml.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.media.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.swing.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.controls.jar;C:\Program Files\Java\javafx-sdk-11.0.1\lib\javafx.graphics.jar" sample.Main
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.base not found
Process finished with exit code 1
Run Code Online (Sandbox Code Playgroud)
正如我在侧边栏javafx.base
下方看到的那样,这对我来说毫无意义lib
:
通往jdk-11.0.1
和的路径javafx-sdk-11.0.1
:
C:\ Program Files \ Java …
我们最近从Java 8迁移到了openJdk11。现在,我正在尝试使用两个操作系统上都安装的openJdk在Windows和ubuntu上测试我的应用程序。我可以在ubuntu上运行它。但是在Windows10中没有使用java11.Error_Message执行相同的操作:
java.lang.RuntimeException: No toolkit found
at com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:272)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
at com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
at com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
at com.sun.javafx.application.LauncherImpl.launchApplication1(LauncherImpl.java:678)
at com.sun.javafx.application.LauncherImpl.lambda$launchApplication$2(LauncherImpl.java:195)
at java.base/java.lang.Thread.run(Unknown Source)
Run Code Online (Sandbox Code Playgroud) 我必须在这里遗漏一些明显的东西...我正在尝试VSCode(来自Eclipse),但是我无法获得VSCode来查看JavaFX11库。在import语句中,标记了对JavaFX组件的所有引用:
[Java] The import javafx cannot be resolved
Run Code Online (Sandbox Code Playgroud)
在Eclipse中,这由“用户库”处理,该库在.classpath中生成一个条目
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11">
<attributes>
<attribute name="module" value="true"/>
</attributes>
</classpathentry>
Run Code Online (Sandbox Code Playgroud)
尽管VSCode似乎可以从Eclipse理解.classpath的其余部分,但它不理解这一点。用磁盘上的实际位置替换path属性也不起作用。
为了清楚起见:
值得一提的是,如果VSCode也可以直接执行JavaFX应用程序,那就太好了。但是,如果我必须从命令行使用显式的模块路径和类路径启动应用程序,这是可以接受的
我有一个JavaFX 8项目,该项目是在Windows 10上使用NetBeans 8.2开发的。我以此为基础构建的JAR已在华硕Tinker板上运行。
我想使用JDK 11和JavaFX 11来利用一些新功能,并希望获得一些性能提升。安装NetBeans 10后并在以下教程的帮助下:https : //openjfx.io/openjfx-docs/#introduction(JavaFX和NetBeans>非模块化与Maven一节),我已经成功移植并可以在我的机器上运行该应用程序Windows系统。
通过IDE或使用命令提示符:java --module-path%PATH_TO_FX%--add-modules = javafx.c ontrols,javafx.fxml,javafx.graphics,javafx.media -jar Praatpaal2-2.0-jar-with -dependencies.jar
与JavaFX 8相比,现在将JavaFX模块添加为模块。
但是,当我在华硕Tinker Board(正在运行Tinker OS(Debian))上执行相同操作时,出现以下错误:
引导层java.lang.module.FindException初始化期间发生错误:javafx.base的哈希(d87df23ee5c54c7ff062c4f8572bab8aaf6c1775854662008fccdb993957bcad)与预期的哈希(320c5b0ffaf22fec9daf0c3e364f6598631b333fa95015055)
关于此哈希不匹配的信息很少。我的怀疑是它要么尝试加载Windows版本的javafx.base.jar,要么我在Maven pom.xml中使用org.openjfx,但在运行时引用了GluonHQ JavaFX,或者我的模块化设置有问题。
pom.xml的依赖项和构建部分如下所示:
<dependencies>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11.0.2</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11.0.2</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>11.0.2</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>11.0.2</version>
<classifier>win</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-controls</artifactId>
<version>11.0.2</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-fxml</artifactId>
<version>11.0.2</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-graphics</artifactId>
<version>11.0.2</version>
<classifier>linux</classifier>
</dependency>
<dependency>
<groupId>org.openjfx</groupId>
<artifactId>javafx-media</artifactId>
<version>11.0.2</version>
<classifier>linux</classifier>
</dependency>
<dependency> …
Run Code Online (Sandbox Code Playgroud) 我正在尝试部署一个非常基本的 JavaFX 应用程序。我只是在创建一个新的 JavaFX 项目并尝试将其部署到 .exe,但它给了我一个未找到模块的错误。
这是控制台日志:
Buildfile: D:\eclipseProjects\Test\build\build.xml
setup-staging-area:
[delete] Deleting directory D:\eclipseProjects\Test\build\externalLibs
[delete] Deleting directory D:\eclipseProjects\Test\build\project
[delete] Deleting directory D:\eclipseProjects\Test\build\projectRefs
[mkdir] Created dir: D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[copy] Copying 1 file to D:\eclipseProjects\Test\build\externalLibs
[mkdir] Created dir: D:\eclipseProjects\Test\build\project
[copy] Copying …
Run Code Online (Sandbox Code Playgroud) javafx-11 ×10
java ×7
javafx ×7
java-11 ×4
bundle ×1
eclipse ×1
efxclipse ×1
java-module ×1
java-platform-module-system ×1
maven ×1
module-info ×1
openjfx ×1
release ×1
windows-10 ×1