问题标签 [jlink]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 在 android Studio 中使用自定义 JRE
我刚刚阅读了 Java 9 的一些新特性。有一个概念 Jlink,通过它我们可以创建自定义 JRE,并且可以在运行类时在 java 命令中使用该自定义 JRE 的路径。
所以我很想知道如何在 android studio 或任何编辑器(如 Eclipse)中使用该自定义 JRE。
java - 是否可以在 JDK 11 上使用 jlink 来创建包含已删除的 Java SE EE 模块的运行时?
当我尝试在我的运行时包含 java.xml.bind 时,我收到一条错误消息:
错误:自动模块不能与 jlink 一起使用:java.activation from file:...[url to javax.activation-api-1.2.0.jar in my gradle cache]
我在模块路径上使用这些工件:
似乎在 JDK 11 中删除了模块,但没有提供完全模块化的替代品。所以 jlink 不能从他们那里做一个运行时。
考虑到它们已经是 JDK 10 中的模块,为什么没有适当地模块化外部替换?
java.activation 不仅没有模块化,它还有一个新的模块名称,“jakarta.activation”。请参阅https://eclipse-ee4j.github.io/jaf/#Latest_News 我相信这会进一步破坏事情,因为在 jlink 运行之前,依赖于该模块的所有内容都必须再次更改。
java - 使用 Jlink 打包的应用程序找不到属性文件
我正在将应用程序从 Oracle Java 8 迁移到 openJDK11 + openJFX11。在 Java 8 版本中,我使用以下代码加载了一个属性文件(CryoStats 是包含该代码的类):
在我的 Netbeans 构建配置中,我有一个任务将“config”文件夹复制到“dist”文件夹,因此包括:我的 jar 文件、“lib”文件夹、“config”文件夹。此代码在 Netbeans 和运行时都有效。
我需要让用户能够编辑属性文件,所以我需要将它保存在 jar 之外。
我现在已将代码迁移到 Eclipse 项目,并针对 openJDK11 和 openJFX11 进行编译。如果我在 Eclipse 中运行项目,它会加载属性文件。但是,如果我使用 jlink 创建模块的运行时映像,则找不到属性文件,并且 jarLocation 的值为:
据我所知,这是因为在完全模块化的 Java 应用程序中没有类路径的概念,所以作为一种解决方法,我使用了
并且我在执行 jlink 后手动将“config”文件夹复制到“bin”文件夹。这在我启动应用程序时有效,但它在 Eclipse 中不起作用,这是一个粗糙且丑陋的解决方案。
有没有办法让用户在 jlink 生成的运行时映像中访问属性文件,同时又可以被 Eclipse 访问?
java - 如何在没有 CMD 窗口的情况下运行 jlink 生成的 Java 运行时映像?
我为一个简单的 OpenJFX 应用程序创建了 Java 运行时映像。为了运行这个应用程序,jlink 在%image_path%/bin
目录下自动生成了两个 lauch 脚本。这是它的样子(适用于 Windows):
显然,当我运行这个批处理文件时,它会打开新的 shell 窗口,这不是我想要的。我已经尝试了所有常见的方法:使用javaw
而不是,通过命令java
运行脚本等。没有任何效果。start
是否可以避免 shell 窗口或以某种方式创建本机启动器?
java - 如何为 JLink 启动器可执行文件设置 VM 选项
使用时jlink
,会生成一个bin/java
文件。这个可执行文件将通过在命令行上以通常的方式(例如-Dsystem.property=value
或-Xmx1G
)指定选项来接受 VM 选项。
jlink
还提供了一个--launcher
选项来创建可以直接运行的可执行文件,而不必bin/java
使用模块名称调用可执行文件。
如何使启动器可执行文件预先配置为使用我选择的 JVM 选项?
java - jdeps 在 fat jar 中使用 Java 11 和 JavaFX 失败
我正在尝试使用 jdeps(和 jlink)来部署使用 JavaFX 11 的 Java 11 应用程序。在我的 Java IDE 中运行良好。但是当我使用 jdep 时,我得到以下错误,这表明找不到某些模块或包。我被困住了。谢谢你的帮助。
jdeps --list-deps --module-path /Users/…/target:/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home/jmods:/Users/…/javafx-sdk-11.0。 2/lib --add-modules 链编码器、javafx.fxml、javafx.base、javafx.controls、javafx.graphics、javafx.web /Users/…/target/chaincoder4-1.0.jar
模块信息.java 是
模块链编码器{
}
pom.xml 是
java - jlinked JRE 中的“收到致命警报:handshake_failure”
java.net.http.HttpClient
我的 Java 程序通过(Java 11)发送请求。
当我在 OpenJDK 11 的 JRE 上的 Eclipse 中运行它时,它可以工作。
在自定义 jlinked JRE 上,我收到一个错误:
我想问题出在我的自定义 JRE 上。
java - 模块化 OpenJDK11 Java 镜像在 Linux 上找不到动态库(例如 libjava.so)
我在 Windows 10 上使用 OpenJDK 11.0.2 编译了一个模块化 Java 应用程序。我已经下载了 linux OpenJDK 11.0.2 jmods,并使用它们使用 jlink 创建了运行时映像。我已将映像复制到 CentOS 6.10 虚拟机,如果我尝试启动 java(由 jlink 生成的映像的 bin 文件夹中的那个),它会显示“错误:找不到 libjava.so”。libjava.so 文件位于运行时映像的 lib 文件夹中。如果我将 java 可执行文件移动到 /usr/bin 并将 libjava.so 移动到 /usr/lib,它会抱怨找不到不同的 .so 文件,所以我猜这意味着它希望找到 lib 文件夹的内容/usr/lib 目录。在 Windows 上没有这样的问题(即,如果我使用 Windows jmod 文件创建图像)。我' 我不愿意通过创建一个创建十分之一的符号链接的安装脚本来解决这个问题,但我想不出任何其他解决方案。我还尝试定义一个指向 [run-time image]/bin 文件夹的 $JAVA_HOME 变量,但它仍然不起作用。
java - 在 linux 主机上创建 osx java app 发行版
我正在开发一个我想在其他平台上本地分发的 java 应用程序(linux、java 10+)。我成功构建了一个 windows dist: jlinked in linux with a java 10+ windows dist,即,它使用我的模块、java.exe 和相应的 dll 创建了一个目录(我验证它在 windows 上工作)。
问题是当我想构建一个 OSX dist (linux java 10 jlink + OSX java 10 dist) 时,生成的文件夹有 java linux 可执行文件和linux SO 库而不是osx dylib libs。
我正在使用的命令行是(这适用于 linux 和 windows):
我也试过
"$TARGET_JDK_PATH"/Contents/Home/jmods/
Linux 和 OSX Java 版本是 11.0.2。
提前致谢。
java - SSLHandshakeException 与 jlink 创建运行时
我有一个 dropwizard 应用程序,它在标准 JRE 上运行良好。
我尝试使用非常小的 jlink 创建运行时:
如果我使用 jlink 创建的运行时运行它,它会抛出连接到 redis 的错误(前面有 stunnel)。
stunnel 服务器日志显示:
jlink是否遗漏了一些加密算法?