我正在尝试使用IntelliJ运行示例JavaFX项目,但它失败并出现异常:
Error: JavaFX runtime components are missing, and are required to run this application
Run Code Online (Sandbox Code Playgroud)
我在这里下载了JDK 11:http ://jdk.java.net/11/我在 这里下载了OpenJFX:http://jdk.java.net/openjfx/我正在使用:IntelliJ IDEA 2018.2(社区版)构建#IC-182.3684.40,建于2018年7月17日JRE:1.8.0_152-release-1248-b8 amd64 JVM:JetBrains的OpenJDK 64位服务器虚拟机sro Windows 10 10.0
我使用JDK 11在IntelliJ中创建了一个新的JavaFX项目.我的JavaFX类未知,所以我通过执行以下操作添加了OpenJFX库:
我将OpenJFX添加到"类"下面的8个jar,以及"Sources"下面的文件夹和"Native Library Locations"下bin文件夹的路径.
当我正在构建项目时,这很好,但不可能运行它.
我究竟做错了什么?
我有一个JavaFX(JDK 8)桌面业务应用程序,它使用Java Web Start进行部署.用户安装了Java 8,他们只需转到URL(我的AWS Linux服务器上的公共URL),然后下载/启动应用程序(使用Web Start).我也可以通过将新JAR部署到服务器来轻松更新应用程序.一切都很好.
但是,Oracle已经停止了使用Java 11的Web Start,并且在2018年3月的"Java客户端路线图更新"白皮书中,他们建议将JRE与应用程序捆绑在一起("应用程序的概念是从独立的JRE单独分发的,因此,快速消退.").我不能依赖我的用户留在Java 8 for Web Start,即使他们仍然保持在8,Oracle也需要许可才能继续使用Java 8(我没有,可能非常昂贵,我更喜欢无论如何与社区一起走向JavaFX 11和OpenJDK).
我想迁移到JavaFX 11.我遵循OpenJFX的"JavaFX11入门"(https://openjfx.io/openjfx-docs/),使用OpenJDK 11.0.1和Gluon的JavaFX SDK 11.0.1(在Netbeans 10vc2上) ),并且已经能够运行示例应用程序(在我看来,我应该能够非常轻松地将我的JavaFX 8代码移植到JavaFX 11).
然而,这是我被困在方向的地方.如何将其与JRE捆绑在一起并将其部署到我的最终用户(并提供应用程序更新)?那里有一个简单的方法(甚至是艰难的方式,有一些方向/指南)?
我可以花几百个小时在JavaFX 11中编写富有表现力,丰富且有用的桌面业务应用程序,但我该怎么做呢?
部署工具包(如JWrapper,InstallAnywhere等)是否适合Java 11的这个新时代?Gluon/openjfx.io可能有我错过的推荐或指南吗?我似乎无法从信誉良好的来源找到任何建议或指南,因为我们开发人员如何专注于编写前端代码,以便部署应用程序.
感谢您的帮助或指导.
如果我理解Oracle的公告,JavaKX将不会从JDK 11开始包含在JDK中,并且只能作为OpenJFX使用.
作为软件开发人员,我必须采取哪些步骤才能使用JDK 11+运行我的JavaFX应用程序?有什么好的adivce吗?将通过Gradle提供OpenJDK吗?
我正在尝试让一个可以在我的机器上完美运行的应用程序在docker上运行,这是我的docker文件:
FROM openjdk:11-jre-slim
VOLUME /tmp
ADD someJar.jar someJar.jar
ADD lib lib
ADD config.properties config.properties
ENTRYPOINT ["java", "-javaagent:lib/aspectjweaver-1.9.2.jar",
"-javaagent:lib/spring-instrument-5.1.6.RELEASE.jar", "--module-path",
"lib/javafx-sdk-11.0.2", "--add-modules=javafx.controls", "-
Dprism.verbose=true", "-jar","someJar.jar"]
Run Code Online (Sandbox Code Playgroud)
我还尝试将其基于高山openjdk11版本,其结果相同:
FROM adoptopenjdk/openjdk11:alpine
VOLUME /tmp
RUN apk update && apk add libx11 mesa-gl gtk+3.0 && apk update
ADD someJar.jar someJar.jar
ADD lib lib
ADD config.properties config.properties
ENTRYPOINT ["java", "-javaagent:lib/aspectjweaver-1.9.2.jar", "-javaagent:lib/spring-instrument-5.1.6.RELEASE.jar", "--module-path", "lib", "--add-modules=javafx.controls", "-Dprism.verbose=true", "-jar","someJar.jar"]
Run Code Online (Sandbox Code Playgroud)
The lib folder contains the linux flavor of the openJFX runtime (.so files and .jar files). I am developing this on …
我从OpenJFX项目下载了JavaFX Jmod文件并将它们放在目录中G:\openjfx\javafx-jmods-11.我正在使用没有JavaFX jmod的OpenJDK 11,JAVA_HOME/jmods即它没有JavaFX发行版.
模块信息文件:
module gui{
requires javafx.graphics;
requires javafx.controls;
exports com.test;
}
Run Code Online (Sandbox Code Playgroud)
我编译如下:
javac -p G:\openjfx\javafx-jmods-11 -d mods --module-source-path src
src\gui\com\test\*.java src\gui\module-info.java
Run Code Online (Sandbox Code Playgroud)
编译成功.但我无法使用以下命令运行已编译的代码:
java -p G:\openjfx\javafx-jmods-11;mods -m gui/com.test.CreateGuiDemo
Run Code Online (Sandbox Code Playgroud)
但我得到以下错误:
Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.graphics not found, required by gui
Run Code Online (Sandbox Code Playgroud) 我有一个Java 8应用程序,它使用JavaFX,主类扩展了 javafx.application.Application.目前,我将它作为胖罐提供,它在Oracle Java 8上运行良好.
现在我希望它能够在OpenJDK 11上运行.要添加JavaFX,我已经将org.openjfx中的工件添加到类路径中,并将它们包含在胖jar中.如果我从命令行启动我的jar,我明白了
Error: JavaFX runtime components are missing, and are required to run this
application
Run Code Online (Sandbox Code Playgroud)
我找到了解决此问题的两种可能方法:
虽然我可以使用1.作为一种解决方法,但我想知道目前(OpenJDK 11)构建/交付非模块化JavaFX应用程序的可执行胖罐的方法.有人可以帮忙吗?
我想为Windows x86 arch构建我的JavaFX应用程序.所以我下载了Adopt OpenJdk 32位版本并用它来创建Java Runtime Image.当我尝试运行应用程序时,我收到以下错误:
Loading library api-ms-win-core-console-l1-1-0 from resource failed: java.lang.UnsatisfiedLinkError: C:\Users\admin01\.openjfx\cache\11.0.1\api-ms-win-core-console-l1-1-0.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
java.lang.UnsatisfiedLinkError: C:\Users\admin01\.openjfx\cache\11.0.1\api-ms-win-core-console-l1-1-0.dll: Can't load AMD 64-bit .dll on a IA 32-bit platform
at java.base/java.lang.ClassLoader$NativeLibrary.load0(Native Method)
Run Code Online (Sandbox Code Playgroud)
发生此错误是因为openjfx:javafx-graphics工件是平台相关的,它包括为64位arch编译的DLL.
$ file api-ms-win-core-console-l1-1-0.dll
api-ms-win-core-console-l1-1-0.dll: PE32+ executable (DLL) (console) x86-64, for MS Windows
Run Code Online (Sandbox Code Playgroud)
Maven Central中没有32位OpenJFX版本.
有可能在某处获得x86版本吗?或者我如何自己构建它?
尝试在环境中编译JavaFX应用程序时:
java -version
openjdk version "1.8.0_212"
OpenJDK Runtime Environment (build 1.8.0_212-8u212-b03-0ubuntu1.18.04.1-b03)
OpenJDK 64-Bit Server VM (build 25.212-b03, mixed mode)
cat /etc/lsb-release
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.2 LTS"
Run Code Online (Sandbox Code Playgroud)
我收到错误消息:
cannot access javafx.event.EventHandler
[ERROR] class file for javafx.event.EventHandler not found
Run Code Online (Sandbox Code Playgroud)
我尝试通过以下链接找到解决方案:
最有希望的行动在哪里
但是错误仍然存在。
要使OpenJDK 8和JavaFX在Ubuntu 18.04.2 LTS上运行需要做什么?
我正在尝试在 Ubuntu 20.10 上安装 OpenJDK 8 和 OpenJFX 8。
在 Ubuntu 上安装 openJFX 8 一直有点棘手,但我曾经能够使用这个 SO 答案中的提示来做到这一点:https : //stackoverflow.com/a/56166582/2423283以前工作得很好(我认为我使用的是 Ubuntu 19.something),但最近似乎已8u161-b12-1ubuntu2被删除。
有关更多背景信息,我正在通过自动化管道中的 docker 文件安装它。以下是 Dockerfile 的相关部分:
FROM my.company.internal.registry:443/ubuntu:latest
RUN apt -y update && \
apt -y install \
openjdk-8-jdk \
openjfx=8u161-b12-1ubuntu2 \
libopenjfx-java=8u161-b12-1ubuntu2 \
libopenjfx-jni=8u161-b12-1ubuntu2
Run Code Online (Sandbox Code Playgroud)
这曾经运行得很好,但现在我得到:
E: Version '8u161-b12-1ubuntu2' for 'openjfx' was not found
E: Version '8u161-b12-1ubuntu2' for 'libopenjfx-java' was not found
E: Version '8u161-b12-1ubuntu2' for 'libopenjfx-jni' was not found
Run Code Online (Sandbox Code Playgroud)
我试着改变我ubuntu:latest要ubuntu:19:10在我 …
我们正在从 Oracle jdk8 迁移到 OpenJDK 8。但是我们的系统有 JavaFX 代码,需要从 JavaFX 迁移到 OpenJFX。
我想知道Oracle jdk8中的JavaFX和openjfx8有什么关系。谁能为我解释一下吗?