【问题标题】:NPE when trying to instantiate Java object from Jython (WAS)尝试从 Jython (WAS) 实例化 Java 对象时的 NPE
【发布时间】:2012-03-14 13:38:56
【问题描述】:

给定班级

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 行,在? java.lang.NullPointerException 在 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。

【问题讨论】:

    标签: websphere jython wsadmin


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2017-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      相关资源
      最近更新 更多