使用 CL 或 RPGLE 在 IBM i 上以编程方式检查 java 版本
Check java version programmatically on IBM i using CL or RPGLE
我有一种情况,我必须检查 IBM i 上的 java 版本是否等于 1.8。
在我的 CL 程序中有一个 RUNJVA 调用,它 运行 是一个依赖于 java 1.8 的 jar 文件。仅当 IBM i 机器具有 Java 1.8.
时,我才想 运行 该命令
在 IBM i 上有很多方法可以查看 java 版本,但要以编程方式检查版本,我需要以某种方式在变量中获取版本信息。
一种方法是 运行 命令
RUNJVA CLASS(*版本) 输出(*打印)
并从假脱机文件中读取版本。但是这种方法应该有效,但我正在寻找更无缝的方法。另外阅读假脱机文件以获取信息似乎不是一个好方法
尝试以下操作:
使用 RUNRMTCMD 执行 'java -version'。捕获输出或错误,解析并找出版本。
我不确定这是否优雅,但至少您不必处理假脱机文件。我将 java -version 的输出写入数据区域,然后您可以获取该数据区域:
创建一个数据区来保存 java_version 文件第一行的值。您可以将这些添加到您的 CL 中:
QSH CMD('java -version 2> /some/IFSdir/java_version')
QSH CMD('head -n 1 /some/IFSdir/java_version | datarea -w /qsys.lib/doug
.lib/testing.dtaara')
然后只需将数据区域抓取到一个变量中并在那里进行计算。
我有一种情况,我必须检查 IBM i 上的 java 版本是否等于 1.8。
在我的 CL 程序中有一个 RUNJVA 调用,它 运行 是一个依赖于 java 1.8 的 jar 文件。仅当 IBM i 机器具有 Java 1.8.
时,我才想 运行 该命令在 IBM i 上有很多方法可以查看 java 版本,但要以编程方式检查版本,我需要以某种方式在变量中获取版本信息。
一种方法是 运行 命令
RUNJVA CLASS(*版本) 输出(*打印)
并从假脱机文件中读取版本。但是这种方法应该有效,但我正在寻找更无缝的方法。另外阅读假脱机文件以获取信息似乎不是一个好方法
尝试以下操作:
使用 RUNRMTCMD 执行 'java -version'。捕获输出或错误,解析并找出版本。
我不确定这是否优雅,但至少您不必处理假脱机文件。我将 java -version 的输出写入数据区域,然后您可以获取该数据区域:
创建一个数据区来保存 java_version 文件第一行的值。您可以将这些添加到您的 CL 中:
QSH CMD('java -version 2> /some/IFSdir/java_version')
QSH CMD('head -n 1 /some/IFSdir/java_version | datarea -w /qsys.lib/doug
.lib/testing.dtaara')
然后只需将数据区域抓取到一个变量中并在那里进行计算。