本文共 2261 字,大约阅读时间需要 7 分钟。
java jnlp
最近,我写了关于如何 Java 11删除 (JNLP)的问题,这是我与之合作的组织如何分发关键业务应用程序的方式。 据我所知,因为我在Linux上维护了以前的JNLP应用程序,但是又部署到Windows桌面上,所以这意味着我必须执行打包步骤,其中涉及在中间Windows计算机上创建自定义Java 11运行时环境。
该过程如下所示:
中间机器的要求很痛苦; 这意味着我需要携带两台计算机(在旅途中不容易管理), 或者需要在Linux笔记本电脑上安装Windows虚拟机(不是我打算做的事), 或者我需要远程访问Windows桌面(我们最终选择的解决方案)。
Oracle公司的非常友好地写信给我,分享第四个选择:将Windows版本的OpenJDK 11放在Linux开发平台上,并从中构建自定义Java 11运行时。 根据Alan的说法,自JDK 9起,这已经成为可能。 他指出,“存在一些限制,并且(Linux实用程序和Windows OpenJDK之间的版本)需要匹配。”
由于这将消除上面概述的繁琐步骤,包括对Windows桌面进行远程访问的需要,因此我不得不做进一步调查。 令我惊讶和高兴的是,我不是艾伦提到的“一些限制”之一-这种方法对我来说很好。 但是,我确实发现Linux发行版存储库中的OpenJDK 11版本与我下载的Windows OpenJDK 11距离“不够近”,因此我还需要获得相同版本的Linux OpenJDK 11,并使用其工具来创建Java 11运行时。
这是我的新食谱的详细信息:
我的Bash脚本解决方案的关键元素必须在NetBeans创建的dist文件夹中运行 ,它们是:
export MYPROJ_HOME = / home / me / src / MyOpenJDK11Project export W64_JAVA_HOME = $MYPROJ_HOME / windows / jdk-11.0.2+ 9 export JAVA_HOME = $MYPROJ_HOME / linux / jdk-11.0.2+ 9 export PATH = $JAVA_HOME / bin: $PATH export DEPS = ` jdeps --print-module-deps MyApplication.jar lib /*` jlink --module-path $W64_JAVA_HOME / jmods --no-header-files --no-man-pages --compress = 2 --strip-debug --add-modules $DEPS --output java-runtime
这会将自定义Java 11运行时保留在dist文件夹的子文件夹java-runtime中 。 我的Bash脚本向该文件夹添加了用于安装和运行该应用程序的各种Windows .cmd文件,这些文件当然也保存在MYPROJ_HOME文件夹中。 最后,我的Bash脚本压缩了完整的dist文件夹,并使用scp将其放在Web服务器上。
效果如何? 首先也是最重要的是,用户看不到任何区别。 在我看来,该解决方案是一个巨大的胜利,它大大简化了打包过程,并且不再需要用于打包过程的中间Windows机器。 即使我错过了JNLP的出色功能,我实际上还是更喜欢这种解决方案,因为它使我可以控制Java运行时以及应用程序本身,这对我们所有人(用户,系统管理员和我来说)都是胜利。
在此,我将再次感谢艾伦·贝特曼(Alan Bateman)分享这个出色的建议。
翻译自:
java jnlp
转载地址:http://avbzd.baihongyu.com/