我正在尝试设置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:.'
答案 0 :(得分:0)
正如鲍里斯在评论中所说:
.
代表发出命令的当前目录,这意味着其中的每个* .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服务程序here的程序(START_JVM
)。请注意,Scotts服务程序中的过程不会导出,但您需要做的就是修改源以导出过程。
自定义SETUPJVM
供您个人使用:
BNDDIR()
以引用您自己的绑定目录。