3

给定班级

public class MyObject {
    public MyObject() {
        System.out.println("true = " + true);
    }
}

和 jython 脚本

import sys
sys.path.append('my-custom.jar')
from my.custom import *
config = MyObject()

在 WAS ND 6 中运行时出现以下错误wsadmin.bat

Running c:\user\jem\projects\gmm/build/deploy/x.py
    WASX7209I: Connected to process "dmgr" on node dmgr_node using SOAP connector;  The type of process is: DeploymentManager
    WASX7017E: Exception received while running file "c:\user\jem\projects\gmm/build/deploy/x.py"; exception information:

com.ibm.bsf.BSFException:来自 Jython 的异常:Traceback(最里面的最后一个):文件“”,第 7 行,在?org.python.core.PyJavaClass.init_ class _(PyJavaClass.java)的 java.lang.Class.isAssignableFrom(Native Method) 的 java.lang.NullPointerException ... org.eclipse.core 大约剪掉了 20 行.launcher.Main.run(Main.java:981) 在 com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:339) 在 com.ibm.wsspi.bootstrap.WSPreLauncher.main(WSPreLauncher.java:94 )

    java.lang.NullPointerException: java.lang.NullPointerException

现在做什么?

更新:

似乎将 jar 包含到sys.path足以让类被发现,但不足以让它被实例化。如果我将 jar 解压缩到它工作的现有路径中。

所以我的新问题是,为什么不添加罐​​子来sys.path工作?是不是因为jython版本太旧了?我相信它是v2.1。

4

2 回答 2

0

通常,我相信sys.path它用于包含 python 模块(或文件)的目录.class,这可能是解压缩 jar 时它起作用的原因。我认为你真正想要的是把你的 jar 放在java 类路径上。这可以通过-wsadmin_classpath在调用时通过选项提供 jar 的路径来完成wsadmin

于 2012-02-24T15:57:30.343 回答
0

sys.path 用于 python 类文件而不是 java 类文件。os.path 也经常结合使用,以确保您拥有有效且完整的路径。我不知道这是否不可能,但我也从来没有使用 sys.path (在 wsadmin 中)来处理 python/jython 文件,但我可能只是做错了。

于 2014-07-15T16:28:39.087 回答