我想使用 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;
这导致我的所有其他依赖项显示“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
如果我将以下内容添加到VM选项中
 --module-path="C:\Program Files\Java\javafx-sdk-11\lib" --add-modules=javafx.controls
我收到这些错误:
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 …我们最近从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)
我必须在这里遗漏一些明显的东西...我正在尝试VSCode(来自Eclipse),但是我无法获得VSCode来查看JavaFX11库。在import语句中,标记了对JavaFX组件的所有引用:
[Java] The import javafx cannot be resolved
在Eclipse中,这由“用户库”处理,该库在.classpath中生成一个条目
<classpathentry kind="con" path="org.eclipse.jdt.USER_LIBRARY/JavaFX11">
    <attributes>
        <attribute name="module" value="true"/>
    </attributes>
</classpathentry>
尽管VSCode似乎可以从Eclipse理解.classpath的其余部分,但它不理解这一点。用磁盘上的实际位置替换path属性也不起作用。
为了清楚起见:
值得一提的是,如果VSCode也可以直接执行JavaFX应用程序,那就太好了。但是,如果我必须从命令行使用显式的模块路径和类路径启动应用程序,这是可以接受的
我正在尝试部署一个非常基本的 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 …我有三个名为 core、common 和 item 的模块,每个模块都是 Maven 项目的子模块。我正在使用 ServiceLoader 来实现服务方法,并使用 Java 11 和 fontawesomefx 11(最新)。
我没有使用过 Java 的模块系统,所以我不知道我对模块信息文件的处理是否正确。然而,核心和项目模块都需要 fontawesomefx 模块,并且会导致以下错误:
Error occurred during initialization of boot layer
java.lang.LayerInstantiationException: Package license in both module de.jensd.fx.fontawesomefx.materialicons and module de.jensd.fx.fontawesomefx.materialdesignicons
所有子模块的模块信息:
module common {
    requires javafx.graphics;
    requires javafx.controls;
    requires de.jensd.fx.fontawesomefx.commons;
    exports common.abstractions;
    exports common.services;
    exports common.sidebar;
    opens common.services;
}
module core {
    requires common;
    requires javafx.controls;
    requires javafx.fxml;
    requires de.jensd.fx.fontawesomefx.materialdesignicons;
    uses common.services.ISidebarPlugin;
    exports core.ui to javafx.graphics;
    exports core.ui.mainpage to javafx.fxml;
    exports core.ui.sidebar to javafx.fxml; …我想创建一个应该是桌面应用程序的新项目。为此,我选择了 Kotlin 语言和 TornadoFX 框架。我已经安装了TornadoFX插件并创建了一个新的 T tornadofx-gradle-project。Intellij 进行的基本设置成功,但我遇到了问题。当我想运行生成的项目时,它失败了。该项目无法解析 java fx。我已经通过网络挖掘并没有发现可以解决问题的任何内容。我在构建失败后收到的错误日志是:
有没有人面临同样的问题?我怎样才能摆脱它?
我已经安装了 JDK 11 并将其设置为构建配置,但我仍然收到问题:
java.lang.UnsupportedClassVersionError: org/openjfx/gradle/JavaFXPlugin has been compiled by a more recent version of the Java Runtime (class file version 55.0), this version of the Java Runtime only recognizes class file versions up to 52.0
是否有更改,我在中间错过了什么?
我的JavaFx应用程序从源代码运行得很好,但是当我编译为单个 jar 文件时,出现错误:
错误:缺少 JavaFX 运行时组件,运行此应用程序需要这些组件。
我正在Maven用作我的存储库管理器,并且我的 Maven 安装成功。
注意:在我的Intellij构建工件中,我可以看到Intellij包含JavaFx及其所有库
项目名称-JavaFX
模块-info.java
module JavaFX {
requires javafx.fxml;
requires javafx.controls;
requires java.desktop;
opens sample;
}
控制器.java
package sample;
import javafx.fxml.FXML;
import java.awt.Desktop;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
public class Controller {
    @FXML
    public void handleClick(){
        try{
            Desktop.getDesktop().browse(new URI("http://www.javafx.com"));
        } catch (URISyntaxException | IOException e) {
            e.printStackTrace();
        }
    }
}
我得到错误: 错误:(1, 1) java: 模块 JavaFX 从 java.desktop 和 java.datatransfer 读取包 java.awt
如何解决此问题?
我在 BorderPane(的中心)内遇到 FlowPane 的奇怪行为。 
如果我放大或缩小窗口的宽度,一切都很好。导致这种效果的只是一个狭窄的宽度 +- 5 个像素。重现代码:
public class LayoutBugTest extends Application {
    public static void main(String[] args) {
        launch(args);
    }
    
    public void start(Stage stage) {
        TextField tf1 = new TextField("");
        TextField tf2 = new TextField("");
        TextField tf3 = new TextField("");
        tf1.setPrefColumnCount(20);
        tf2.setPrefColumnCount(10);
        tf3.setPrefColumnCount(10);     
        FlowPane flow = new FlowPane(10,10, tf1,tf2,tf3);
        
        BorderPane box = new BorderPane();
        box.setTop(new Label("Heading"));
        box.setCenter(flow);
        box.setStyle("-fx-border-width: 2px; -fx-border-color: black; -fx-border-radius: 1em; -fx-padding: 5px;");
        
        VBox anyLayout = new VBox(5, new Label("Before"), box, new Label("After"));
        
        Scene scene = …javafx-11 ×10
javafx ×6
java-11 ×4
java ×3
java-module ×2
module-info ×2
eclipse ×1
efxclipse ×1
font-awesome ×1
java-platform-module-system ×1
kotlin ×1
tornadofx ×1
windows-10 ×1