尝试从Jython(WAS)实例化Java对象时的NPE

时间:2012-02-24 03:45:17

标签: websphere jython wsadmin

鉴于课程

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的异常:           回溯(最后面的):           文件“”,第7行,在?           显示java.lang.NullPointerException           at java.lang.Class.isAssignableFrom(Native Method)           在org.python.core.PyJavaClass.init_ class _(PyJavaClass.java)           ......大约20条线路被削减......           在org.eclipse.core.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解压缩到现有的路径中就可以了。

所以我的新问题是,为什么没有将jar添加到sys.path工作?是因为jython版本太旧了吗?我相信它是v2.1。

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

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