我正在尝试设置IBM i服务器以连接到SQL服务器。必要的.JAR驱动程序文件已下载并上载到服务器。我们一直关注这些instructions 。
现在我们尝试设置classpath环境变量。目前看起来如下:
'/QIBM/ProdData/OS400/jt400/lib/jt400Native.jar:/QIBM/ProdData/OS400/jt400/lib/jt400Native11x.jar:/QIBM/ProdData/OS400/jt400/MRI2924/jt400Mri.jar:.
“
jar文件位于/java/jdbc/jtds-1.3.1.jar。似乎我需要做的就是将其附加到类路径字符串。但是,我很困惑,在'jar:'后面的字符串末尾有一个额外的句点('。')
是真的有必要还是错误插入?请告诉我如何将此jar文件添加到类路径中。
在服务器上运行其他java东西,我绝对不能搞砸任何东西。我知道即使是最轻微的改变也会让事情变得糟透了。
WRKENVVAR命令可以选择仅使用作业级变量。我可以在我的工作级别修改这个,而不会影响其他人的工作吗?
编辑01:根据下面的第一条评论,我理解在这种情况下,'。'在大多数示例中我都可以看到最后一个而不是字符串的开头。
那么我可以修改类路径如下吗?
'/QIBM/ProdData/OS400/jt400/lib/jt400Native.jar:/QIBM/ProdData/OS400/jt400/lib/jt400Native11x.jar:/QIBM/ProdData/OS400/jt400/MRI2924/jt400Mri.jar:/java/jdbc/jtds-1.3.1.jar:.'
正如鲍里斯在评论中所说:
.
代表发出命令的当前目录,这意味着其中的每个* .jar文件都将添加到类路径中。
但是我没有看到它会如何有用,因为每个用户都有一个不同的当前目录,而在IBM i上,当前目录可能是IFS中用户的主目录。由于RPG程序不是从IFS运行,因此根本不可能改变。所以你可以安全地从类路径中删除.
。
另一件需要记住的事情是,一旦启动JVM,就无法更改类路径。由于每个作业最多只能有一个JVM,我的做法是设置类路径并在每个需要它的作业开始时启动JVM。我使用我专门为此目的创建的CL程序来做到这一点。
下面是一个示例SETUPJVM程序,可用于设置和启动JVM:
PGM
DCLPRCOPT DFTACTGRP(*NO) ACTGRP(*NEW) BNDDIR(MYBNDDIR) +
USRPRF(*OWNER)
DCL VAR(&POINTER) TYPE(*PTR)
ADDENVVAR ENVVAR(CLASSPATH) +
VALUE('+
/java/poi-3.14/poi-3.14-mx.jar:+
/java/poi-3.14/poi-ooxml-3.14-mx.jar:+
/java/poi-3.14/ooxml-schemas-1.3.jar:+
/java/poi-3.14/lib/commons-codec-1.10.jar:+
/java/poi-3.14/lib/commons-logging-1.2.jar:+
/java/poi-3.14/lib/log4j-1.2.17.jar:+
/java/poi-3.14/ooxml-lib/xmlbeans-2.6.0.jar:+
/java/poix/poi-extend.jar:+
/java/javamail/javax.mail.jar:+
/java/rpgmail/rpgmail.jar:+
/java/prod/lib/mxSqlSvrJdbc.jar:+
/java/prod/lib/sqljdbc.jar:+
/java/prod/classes/cribMaster+
') REPLACE(*YES)
ADDENVVAR ENVVAR(QIBM_RPG_JAVA_PROPERTIES) +
VALUE('+
-Djava.awt.headless=true;+
-Djava.net.preferIPv4Stack=true;+
') REPLACE(*YES)
ADDENVVAR ENVVAR(QIBM_USE_DESCRIPTOR_STDIO) VALUE('Y') REPLACE(*YES)
ADDENVVAR ENVVAR(JAVA_HOME) +
VALUE('/QOpenSys/QIBM/ProdData/JavaVM/jdk80/32bit'+
) REPLACE(*YES)
ADDENVVAR ENVVAR(QIBM_RPG_JAVA_EXCP_TRACE) VALUE('Y') REPLACE(*YES)
CALLPRC PRC(START_JVM) RTNVAL(&POINTER)
OUT: ENDPGM
这是一个CLLE,并从Scott Kelment的HSSFR4服务程序中找到START_JVM
的程序(here)。请注意,Scotts服务程序中的过程不会导出,但您需要做的就是修改源以导出过程。
定制SETUPJVM
供您个人使用:
BNDDIR()
以引用您自己的绑定目录。