标签: javafx-11

包 x 在未命名模块中声明,但模块 x 不读取它

我想使用 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

6
推荐指数
0
解决办法
3990
查看次数

IntelliJ IDEA - 错误:缺少JavaFX运行时组件,并且需要运行此应用程序

我正在运行带有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)

java javafx javafx-11

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

使用Java11运行Javafx应用程序时出现“ java.lang.RuntimeException:找不到工具包”错误

我们最近从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)

runtimeexception windows-10 java-11 javafx-11

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

带有VSCode的JavaFX-11

我必须在这里遗漏一些明显的东西...我正在尝试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属性也不起作用。

为了清楚起见:

  • 这个问题专门与Java 11有关。在早期的Java版本中,JavaFX是JDK的一部分。在Java 11中,它已移至一组外部模块。
  • 我不想使用Maven或Gradle。我需要不使用构建工具直接引用模块。

值得一提的是,如果VSCode也可以直接执行JavaFX应用程序,那就太好了。但是,如果我必须从命令行使用显式的模块路径和类路径启动应用程序,这是可以接受的

javafx visual-studio-code java-11 javafx-11

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

部署时出现 JavaFX-11 错误:找不到模块

我正在尝试部署一个非常基本的 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)

eclipse efxclipse module-info java-11 javafx-11

6
推荐指数
0
解决办法
228
查看次数

LayerInstantiationException - 两个模块中的软件包许可证有什么解决方案吗?

我有三个名为 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
Run Code Online (Sandbox Code Playgroud)

所有子模块的模块信息:

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; …
Run Code Online (Sandbox Code Playgroud)

font-awesome java-module java-11 javafx-11

5
推荐指数
1
解决办法
704
查看次数

TornadoFX 未解决的 JavaFx

我想创建一个应该是桌面应用程序的新项目。为此,我选择了 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
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

是否有更改,我在中间错过了什么?

javafx intellij-idea kotlin tornadofx javafx-11

5
推荐指数
1
解决办法
4464
查看次数

如何修复“错误:缺少 JavaFX 运行时组件,需要运行此应用程序”

我的JavaFx应用程序从源代码运行得很好,但是当我编译为单个 jar 文件时,出现错误:

错误:缺少 JavaFX 运行时组件,运行此应用程序需要这些组件。

我正在Maven用作我的存储库管理器,并且我的 Maven 安装成功。

注意:在我的Intellij构建工件中,我可以看到Intellij包含JavaFx及其所有库

javafx-11

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

发生此错误时 Error:(1, 1) java: module JavaFX 从 java.desktop 和 java.datatransfer 读取包 java.awt

项目名称-JavaFX

模块-info.java

module JavaFX {
requires javafx.fxml;
requires javafx.controls;
requires java.desktop;
opens sample;
Run Code Online (Sandbox Code Playgroud)

}
控制器.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();
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

我得到错误: 错误:(1, 1) java: 模块 JavaFX 从 java.desktop 和 java.datatransfer 读取包 java.awt
如何解决此问题?

java javafx module-info javafx-11

5
推荐指数
1
解决办法
3840
查看次数

JavaFX:BorderPane 的布局问题 - 错误还是用户错误?

我在 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 = …
Run Code Online (Sandbox Code Playgroud)

javafx javafx-11

5
推荐指数
1
解决办法
69
查看次数