几年前我们从提供商那里购买了一个解决方案,将.jar文件放在IFS / QIBM / UserData / Java400 / ext /中的标准位置,并且我们一直在使用它。
然而,几个月前,提供商发布了一个新的.jar,其中包含一些我们想要使用的新功能。但是,他们还更改了我们正在使用的几个类和方法的名称。
因此,如果可能的话,我们想要做的是定义一个路径,当旧程序需要使用该.jar时,在定义的路径中查找.jar。对于我们想要使用新的.jar文件的新程序,我们希望有不同的路径。
此时我不知道这是否可行。我一直在寻找这些信息,没有运气。所以,如果周围的人有一些线索,那就太棒了。
感谢您的时间。
编辑:所以我正在阅读你的建议,我有这些内容。 我已经向供应商寻求帮助,但由于这不是为AS400设计的,因此他们不提供支持。 我测试了类路径的可能性。我删除了/ QIBM / UserData / Java400 / ext /中的文件并将它们放入/ QIBM / JARS / old /然后我创建了一个执行此操作的CL:
ADDENVVAR ENVVAR(CLASSPATH) VALUE('/QIBM/JARS/old') REPLACE(*YES)
在我第一次执行这个新CL后,我尝试了一个程序,它将使用我在位置/ QIBM / JARS / old中的.jar,并且我得到了未找到类的错误。所以要么我做错了,要么实际上并不是解决方案。
HotLicks你的意思是不能让用户A1和B1,A1同时使用/QIBM/JARS/old/A.jar和B1使用/QIBM/JARS/new/A.jar?
答案 0 :(得分:3)
您可以调整Java classpath。
答案 1 :(得分:1)
在使用新版本的jar运行时,您可能希望重新定义扩展类路径。
创建一个新目录 - 即/ QIBM / UserData / MyJava / ext
将您需要的jar文件从/ QIBM / UserData / Java400 / ext复制到/ QIBM / UserData / MyJava / ext
将您的新jar文件添加到/ QIBM / UserData / MyJava / ext。
启动Java程序时,使用以下定义来设置扩展目录:-Djava.ext.dirs = / QIBM / UserData / MyJava400
注意:您可能需要根据java.ext.dirs的当前设置调整目录。您可以通过从QSHELL运行以下命令来查找当前设置。
echo '!callmethod java.lang.System.getProperty(java.ext.dirs)' | java -cp /qibm/proddata/http/public/jt400/lib/jt400.jar com.ibm.as400.access.jdbcClient.Main jdbc:db2:localhost
Call returned /QOpenSys/QIBM/ProdData/JavaVM/jdk50/32bit/jre/lib/ext:/QIBM/UserData/Java400/ext
在我的情况下,我会设置-Djava.extdirs = / QOpenSys / QIBM / ProdData / JavaVM / jdk50 / 32bit / jre / lib / ext:/ QIBM / UserData / MyJava / ext