gpt4 book ai didi

java - 配置 OpenJFX 11 以将其 DLL 提取到不同的用户指定目录中?

转载 作者:搜寻专家 更新时间:2023-10-30 23:01:21 24 4
gpt4 key购买 nike

有没有办法配置 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 位上运行。我还没有尝试在 Linux 上运行 OpenJDK 11 和 OpenJFX,但我想 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 pipeline found

最佳答案

先前讨论的总结和链接的资源

从 OpenJFX 12 开始,您可以使用系统属性 javafx.cachedir 告诉 OpenJFX 从哪里提取它的 native 库。注意不要在系统属性的“cacheDir”部分使用驼峰式大小写概念(就像在之前的评论和拉取请求评论中使用的一样)。

查看此 Pull-Request了解详情。

在 12 之前的版本中,OpenJFX 会将其 native 库提取到基于 user.home (System.getProperty("user.home") + "/.openjfx/缓存/"+ jfxVersion).

有两种方法可以修改 OpenJFX 将用作缓存位置的路径

  1. 自行提供原生库并将其存储在自定义位置。然后使用 java.library.path 系统属性告诉 OpenJFX 从您的自定义位置加载它(这将避免提取到固定缓存位置)。
  2. 修改user.home,修改缓存位置。

查看此 Code了解详情。

关于java - 配置 OpenJFX 11 以将其 DLL 提取到不同的用户指定目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53382810/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com