博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java jnlp_Java SE 11删除JNLP的更好解决方案
阅读量:2530 次
发布时间:2019-05-11

本文共 2261 字,大约阅读时间需要 7 分钟。

java jnlp

最近,我写了关于如何 Java 11删除 (JNLP)的问题,这是我与之合作的组织如何分发关键业务应用程序的方式。 据我所知,因为我在Linux上维护了以前的JNLP应用程序,但是又部署到Windows桌面上,所以这意味着我必须执行打包步骤,其中涉及在中间Windows计算机上创建自定义Java 11运行时环境。

该过程如下所示:

Java SE 11的原始JNLP构建过程

中间机器的要求很痛苦; 这意味着我需要携带两台计算机(在旅途中不容易管理), 或者需要在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运行时。

新的解决方案

这是我的新食谱的详细信息:

  1. 在方便的位置创建一个项目文件夹。
    • 我在/ home / me / src / MyOpenJDK11Project (sorta)中创建了我的矿井,并设置了一个名为MYPROJ_HOME (sorta)的Bash环境变量。
  2. 从获取匹配的Windows和Linux OpenJDK 11软件包。
  3. 将它们都安装在方便的地方(Windows版本是.zip; Linux版本是tarball)。
    • 我分别在$ MYPROJ_HOME / windows$ MYPROJ_HOME / linux中安装了我的。
  4. 编写Bash脚本(或makefile,或Ant打包步骤,或…)进行打包。

我的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服务器上。

结果

在没有JNLP的情况下构建Java SE 11的更简单方法

效果如何? 首先也是最重要的是,用户看不到任何区别。 在我看来,该解决方案是一个巨大的胜利,它大大简化了打包过程,并且不再需要用于打包过程的中间Windows机器。 即使我错过了JNLP的出色功能,我实际上还是更喜欢这种解决方案,因为它使我可以控制Java运行时以及应用程序本身,这对我们所有人(用户,系统管理员和我来说)都是胜利。

在此,我将再次感谢艾伦·贝特曼(Alan Bateman)分享这个出色的建议。

翻译自:

java jnlp

转载地址:http://avbzd.baihongyu.com/

你可能感兴趣的文章
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_12_常用的函数式接口_Predicate接口...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_15_常用的函数式接口_Predicate接口练习-集合信息的筛选...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_14_常用的函数式接口_Predicate接口中的默认方法or和negate...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_17_常用的函数式接口_Function接口中的方法andThen...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_16_常用的函数式接口_Function接口中的方法Apply...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_1_使用传统的方式,遍历集合,对集合进行过滤...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_2_使用Stream流的方式,遍历集合...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第2节 Stream流式思想概述_3_流式思想概述...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第1节 常用函数接口_16_常用的函数式接口_Function接口中练习-自定义函数模型拼接...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_2_Stream流中的常用方法_forEach...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_1_两种获取Stream流的方式...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_4_Stream流的特点_只能使用一次...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_5_Stream流中的常用方法_map...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_6_Stream流中的常用方法_count...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_7_Stream流中的常用方法_limit...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_8_Stream流中的常用方法_skip...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_3_Stream流中的常用方法_filter...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_10_练习:集合元素处理(传统方式)...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_9_Stream流中的常用方法_concat...
查看>>
阶段1 语言基础+高级_1-3-Java语言高级_08-JDK8新特性_第3节 两种获取Stream流的方式_11_练习:集合元素处理(Stream方式)...
查看>>