IBM i(AS400)JVM - 是否可以定义JVM查找.jar文件的位置?

时间:2015-04-07 14:56:02

标签: java jar jvm ibm-midrange rpg

几年前我们从提供商那里购买了一个解决方案,将.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?

2 个答案:

答案 0 :(得分:3)

您可以调整Java classpath

答案 1 :(得分:1)

在使用新版本的jar运行时,您可能希望重新定义扩展类路径。

  1. 创建一个新目录 - 即/ QIBM / UserData / MyJava / ext

  2. 将您需要的jar文件从/ QIBM / UserData / Java400 / ext复制到/ QIBM / UserData / MyJava / ext

  3. 将您的新jar文件添加到/ QIBM / UserData / MyJava / ext。

  4. 启动Java程序时,使用以下定义来设置扩展目录:-Djava.ext.dirs = / QIBM / UserData / MyJava400

  5. 注意:您可能需要根据java.ext.dirs的当前设置调整目录。您可以通过从QSHELL运行以下命令来查找当前设置。

  6. 
        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