标签: openjfx

配置OpenJFX 11将其DLL解压缩到另一个用户指定的目录中?

有没有办法配置OpenJFX 11将其DLL提取到不同的用户指定目录?

在尝试将现有Java 10/Maven项目迁移到Java 11时,我尝试使用OpenJDK 11.为了使代码构建工作,我需要将JavaFX JAR添加到Maven pom.xml配置文件中(因为JavaFX不再是Java 11的内置部分).

但是,在运行时,我发现由于OpenJFX将DLL文件提取到用户目录中然后访问失败而导致的错误(请参阅下面的错误).多年来我有许多项目在使用C:\ Users*目录时出错(来自Microsoft Windows干扰文件锁和目录权限,反病毒扫描等),所以我试图避免这些目录可能.Java项目在Windows 7和RedHat 7上的Java 10下正常工作,这似乎意味着Oracle的JavaFX 10 JAR没有将DLL提取到C:\ Users*目录中.OpenJFX似乎没有麻烦将DLL写入这些目录,但之后无法读取这些相同的文件.

我运行的是带有service-pack 1的Microsoft Windows 7 Professional 64位.我还没有尝试使用OpenJDK 11和OpenJFX在Linux上运行,但我认为OpenJFX也会尝试在该平台上提取其DLL.

OpenJFX导致的运行时Java错误示例:

Loading library prism_d3d from resource failed: java.lang.UnsatisfiedLinkError: C:\Users\MyUserName\.openjfx\cache\11\prism_d3d.dll: Access is denied

java.lang.UnsatisfiedLinkError: C:\Users\MyUserName\.openjfx\cache\11\prism_d3d.dll: Access is denied

Loading library prism_sw from resource failed: java.lang.UnsatisfiedLinkError: C:\Users\MyUserName\.openjfx\cache\11\prism_sw.dll: Access is denied

java.lang.UnsatisfiedLinkError: C:\Users\MyUserName\.openjfx\cache\11\prism_sw.dll: Access is denied

Graphics Device initialization failed for : d3d, sw

Error initializing QuantumRenderer: no suitable pipeline found

java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable …
Run Code Online (Sandbox Code Playgroud)

java dll runtime openjfx java-11

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

超类访问检查失败:类 com.sun.javafx.sg.prism.web.NGWebView

我刚刚安装了 SDK 11 并使用了 maven 中的 Javafx。我的pom如下。

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.restfbui21feb</groupId>
    <artifactId>uipostdownload</artifactId>
    <version>1.0-SNAPSHOT</version>
    <build>
        <plugins>

            <plugin>
                <groupId>com.zenjava</groupId>
                <artifactId>javafx-maven-plugin</artifactId>
                <version>LATEST</version>
                <configuration>
                    <mainClass>ui.postDisplayAndAction</mainClass>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.8.0</version>
                <configuration>
                    <release>11</release>
                </configuration>
            </plugin>
        </plugins>
    </build>
    <dependencies>
        <dependency>
            <groupId>com.restfb</groupId>
            <artifactId>restfb</artifactId>
            <version>2.16.0</version>
        </dependency>

        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.2.4</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.jsoup/jsoup -->
        <dependency>
            <groupId>org.jsoup</groupId>
            <artifactId>jsoup</artifactId>
            <version>1.8.3</version>
        </dependency>

    </dependencies>

</project>
Run Code Online (Sandbox Code Playgroud)

我正在使用 WebView,它可以帮助我查看 Facebook 数据并下载我需要的任何内容。

请按如下方式查找异常:

java.lang.IllegalAccessError: superclass access check failed: class com.sun.javafx.sg.prism.web.NGWebView (in unnamed module @0x253d5cf1) cannot access class com.sun.javafx.sg.prism.NGGroup …
Run Code Online (Sandbox Code Playgroud)

java javafx openjfx

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

JavaFX的TreeTableView具有较差的节点扩展性能

我们从Swing迁移到JavaFX,并且还使用JavaFX交换了自定义Swing TreeTableView控件TreeTableView.

然而,我们在扩展节点时会遇到明显的延迟.

在此输入图像描述

通过VisualVM查看这个问题,我们发现大部分时间花费在Parent.scenesChanged()CssStyleHelper.createStyleHelper().然而,我们无法从中获得快速扩展的解决方案.

有没有其他人遇到过JavaFX的问题TreeTableView

节点的数量不应该是原因,在第一级(即,在根之下)有几百个节点,并且每个节点具有大约20个子节点.

附加信息:我们正在运行Ubuntu,openjfx版本(8u60-b27-4).

java javafx javafx-8 openjfx

5
推荐指数
0
解决办法
318
查看次数

IntelliJ IDEA 2018.2、openjdk 11 和 openjfx 11(无 Maven,不是模块化项目):找不到模块 javafx.controls

我刚刚使用 openjdk 11 在 intelliJ 中创建了一个新的 JavaFX 项目,并在他们的网站上下载了最后一个 openjfx 库。

这是我所做的:

我已添加到运行/调试虚拟机选项:--module-path %PATH_TO_FX% --add-modules=javafx.controls,javafx.fxml 虚拟机选项

我添加了一个新变量 env PATH_TO_FX :PATH_TO_FX=%programfiles%\Java\javafx-sdk-11\lib

所以它编译得很好,但在运行时失败:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module javafx.controls not found
Run Code Online (Sandbox Code Playgroud)

有谁知道我在这里缺少什么?

PS:我已经关注此链接https://openjfx.io/openjfx-docs/#install-javafx

编辑 :

我这里应该有 onpenjfx 库吗?类路径

java javafx intellij-idea openjfx javafx-11

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

JavaFX,OS X,图形设备初始化失败:es2,sw

我试图在IntelliJ IDEA中创建JavaFX项目,但每次都会出错。

完成教程https://openjfx.io/openjfx-docs/#IDE-Intellij之后,我得到了:

Graphics Device initialization failed for :  es2, sw
Error initializing QuantumRenderer: no suitable pipeline found
java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:280)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:222)
    at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:260)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:267)
    at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:158)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:658)
    at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:409)
    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: Error initializing QuantumRenderer: no suitable pipeline found
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:94)
    at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:124)
    at java.base/java.lang.Thread.run(Thread.java:834)
Exception in thread "main" java.lang.reflect.InvocationTargetException
    at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) …
Run Code Online (Sandbox Code Playgroud)

java javafx openjfx java-11 javafx-11

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

如何使用CSS为两个相邻TableView的边框设置样式,以使其在JavaFX 11(OpenJFX 11)中看起来像是单个TableView

一个CSS新手问题。

我正在两个相邻的TableViews中显示大量数据,并已双向绑定它们ScrollBarFocusModels和SelectionModels,以使它们保持同步。

我现在正试图使两个TableView看起来像一个,并且想要拥有:

  1. 两个都有焦点时,两个 TableView s 周围的默认蓝色边框。 TableView
  2. 两者都 没有焦点TableView时,两个 s 周围的默认灰色边框。
  3. TableViews相交处无国界。

我将如何去做?

像这样的东西会很棒:

在此处输入图片说明

到目前为止,我已经可以通过执行以下操作删除“相遇”边界:

tvLeft.getStyleClass().add("my-table-view-left");
tvRight.getStyleClass().add("my-table-view-right");
Run Code Online (Sandbox Code Playgroud)

使用这样的CSS:

.my-table-view-left:focused {
    -fx-background-insets: -1.4 0 -1.4 -1.4, -0.3 0 -0.3 -0.3, 1 0 1 1;
}

.my-table-view-right:focused {
    -fx-background-insets: -1.4 -1.4 -1.4 0, -0.3 -0.3 -0.3 0, 1 1 1 0;
}
Run Code Online (Sandbox Code Playgroud)

TableView当选中其中一个行时,这也可以正确地将边框设置在单个边框上。

但是,我想不出如何让周围的边框 TableView ■当任一具有焦点。

这是MVCE。抱歉,因为它的长度,但是我需要包括同步代码才能拥有一个测试用例。

我正在使用在Windows 7的Netbeans …

css javafx tableview openjfx javafx-11

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

JavaFX:右键单击 TableColumn 禁用调整大小

在 OpenJFX 11.0.2 & 12.0.1 SDK (Windows 10, x64) 中复制,不能在 JavaFX 8 中复制

右键单击表列,然后尝试调整列的大小。不会显示调整大小光标,并且在您再次手动单击列之前无法调整列大小。

任何解决方法的想法?我需要contextMenu用于 TableColumns,因此不可能使标题忽略鼠标右键单击的潜在解决方法。

在此处输入图片说明

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.stage.Stage;

public class Foo extends Application {


    @Override
    public void start(Stage stage) throws Exception {
        TableView<Object> testView = new TableView<>();
        testView.getColumns().addAll(new TableColumn<Object, Object>("C1"), new TableColumn<Object, Object>("C2"), new TableColumn<Object, Object>("C3"));

        stage.setScene(new Scene(testView));
        stage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)

java javafx tableview openjfx

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

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

从对我有用的badass-runtime-example-javafx开始,我复制了这个项目并用我自己的代码扩展了它。我用创建了一个图像gradlew runtime。在 Windows 上执行生成的 .bat 文件时,我收到“错误:缺少 JavaFX 运行时组件,需要运行此应用程序”。

在 build.gradle 中,我添加了一个附加模块javafx.fxml

javafx {
    modules = ['javafx.controls', 'javafx.fxml' ]
}
Run Code Online (Sandbox Code Playgroud)

我还运行了该suggestModules任务并将建议的模块添加到

runtime {
    modules = ['java.naming', 'java.xml ...']
}
Run Code Online (Sandbox Code Playgroud)

我的问题是如何分析 Java 运行时缺少哪些模块。我看到它java.exe仅使用-classpath(包括应用程序 jar)和主类参数执行。

java --list-modules答案吗?我看到 build\image\lib 中有一个大文件“模块”,它对我来说看起来很重要。

我正在寻找一种发现的分析方法来解决问题。

java javafx gradle java-module openjfx

5
推荐指数
0
解决办法
1204
查看次数

错误:在顶级目录中找到 Main.class(模块中不允许使用未命名的包)

尝试将应用程序更新到 Java 11,在对模块进行分类之后,我以为我已经摆脱了所有的红色错误,现在我得到了一个我以前从未见过的错误:

在此处输入图片说明

环顾四周,我看到有人建议可以使用应用程序结构:

在此处输入图片说明

或 module-info.java 文件:

在此处输入图片说明

任何人都可以看到我需要做什么才能摆脱这种情况吗?

编辑:将 Main.java 移动到名为“main”的包并尝试运行它后出错:

在此处输入图片说明

java intellij-idea java-module openjfx module-info

4
推荐指数
1
解决办法
8735
查看次数

Maven 找不到 FXMLLoader

我有一个 JavaFx 项目,其中Maven install不断给我错误:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project gui: Compilation failure: Compilation failure:
[ERROR] /C:/Users/digit/eclipse-workspace/gsn-notator/gui/src/main/java/gui/AppController.java:[21,19] package javafx.fxml does not exist
[ERROR] /C:/Users/digit/eclipse-workspace/gsn-notator/gui/src/main/java/gui/AppController.java:[29,17] cannot find symbol
[ERROR] symbol:   class FXMLLoader
[ERROR] location: class gui.AppController
[ERROR] /C:/Users/digit/eclipse-workspace/gsn-notator/gui/src/main/java/gui/AppController.java:[29,45] cannot find symbol
[ERROR] symbol:   class FXMLLoader
[ERROR] location: class gui.AppController
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?我如何说服 Maven/Eclipse/Java/Whatever 找到FXMLLoader?

项目结构有两个模块,guilogic,与本教程中的项目结构。我的整体项目 pom 是:

<modules>
    <module>logic</module>
    <module>gui</module>
</modules>
<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.7.0</version>
            <configuration>
                <source>11</source>
                <target>11</target> …
Run Code Online (Sandbox Code Playgroud)

java javafx maven openjfx java-11

4
推荐指数
1
解决办法
8471
查看次数