标签: openjfx

错误:缺少JavaFX运行时组件,并且需要使用JDK 11运行此应用程序

我正在尝试使用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库:

  • 文件 - >项目结构 - >模块 - > + - >库 - > Java

我将OpenJFX添加到"类"下面的8个jar,以及"Sources"下面的文件夹和"Native Library Locations"下bin文件夹的路径.

当我正在构建项目时,这很好,但不可能运行它.

我究竟做错了什么?

java javafx intellij-idea openjfx

33
推荐指数
1
解决办法
6万
查看次数

如何使用JRE部署JavaFX 11 Desktop应用程序

我有一个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可能有我错过的推荐或指南吗?我似乎无法从信誉良好的来源找到任何建议或指南,因为我们开发人员如何专注于编写前端代码,以便部署应用程序.

感谢您的帮助或指导.

java javafx openjfx javafx-11

21
推荐指数
1
解决办法
7009
查看次数

使用JDK 11+运行JavaFX应用程序

如果我理解Oracle的公告,JavaKX将不会从JDK 11开始包含在JDK中,并且只能作为OpenJFX使用.

作为软件开发人员,我必须采取哪些步骤才能使用JDK 11+运行我的JavaFX应用程序?有什么好的adivce吗?将通过Gradle提供OpenJDK吗?

java javafx javafx-8 openjfx

16
推荐指数
1
解决办法
1万
查看次数

让JavaFX 11应用程序在Docker上工作

我正在尝试让一个可以在我的机器上完美运行的应用程序在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 …

java javafx docker openjfx java-11

15
推荐指数
1
解决办法
587
查看次数

在模块路径上使用OpenJFX 11 JMODS在JDK 11上运行javafx示例

我从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 javafx openjfx java-11 javafx-11

13
推荐指数
1
解决办法
2万
查看次数

打包非模块化JavaFX应用程序

我有一个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. 脏的:编写一个特殊的启动器,它不会扩展应用程序并绕过模块检查.请参阅http://mail.openjdk.java.net/pipermail/openjfx-dev/2018-June/021977.html
  2. 干净的:将--module-path和--add-modules添加到我的命令行.这个解决方案的问题是,我希望我的最终用户能够通过双击启动应用程序.

虽然我可以使用1.作为一种解决方法,但我想知道目前(OpenJDK 11)构建/交付非模块化JavaFX应用程序的可执行胖罐的方法.有人可以帮忙吗?

java javafx maven openjfx javafx-11

11
推荐指数
1
解决办法
3377
查看次数

OpenJFX支持32位系统

我想为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版本吗?或者我如何自己构建它?

java openjfx

11
推荐指数
1
解决办法
891
查看次数

如何在Ubuntu 18.04.2 LTS上使Java FX与OpenJDK 8一起运行?

尝试在环境中编译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)

我尝试通过以下链接找到解决方案:

最有希望的行动在哪里

  1. 使用apt安装openjfx
  2. 将JAVA_HOME环境变量设置为/ usr / lib / jvm / java-8-openjdk-amd64

但是错误仍然存​​在。

要使OpenJDK 8和JavaFX在Ubuntu 18.04.2 LTS上运行需要做什么?

java ubuntu javafx openjfx

10
推荐指数
1
解决办法
2796
查看次数

在 Ubuntu 20 上安装 openJDK+openJFX 8

我正在尝试在 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:latestubuntu:19:10在我 …

java ubuntu javafx-8 openjfx

10
推荐指数
3
解决办法
7767
查看次数

oracle JDK 8 中的 JavaFx 与 openjfx 8 版本是否相同?oracle jdk 8中的javafx和openjfx8有什么关系?

我们正在从 Oracle jdk8 迁移到 OpenJDK 8。但是我们的系统有 JavaFX 代码,需要从 JavaFX 迁移到 OpenJFX。

我想知道Oracle jdk8中的JavaFX和openjfx8有什么关系。谁能为我解释一下吗?

java javafx openjfx

9
推荐指数
1
解决办法
3388
查看次数

标签 统计

java ×10

openjfx ×10

javafx ×8

javafx-11 ×3

java-11 ×2

javafx-8 ×2

ubuntu ×2

docker ×1

intellij-idea ×1

maven ×1