2012-02-24 45 views
3

鉴于类NPE(WAS)

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:exception from fro m Jython: 回溯(最里面的最后一个): 文件“”,第7行,在? 显示java.lang.NullPointerException 在java.lang.Class.isAssignableFrom(本机方法) 在org.python.core.PyJavaClass.init_ 类_(PyJavaClass.java) ......约20线剪裁... at com.ibm.wsspi.bootstrap.WSPreLauncher.launchEclipse(WSPreLauncher.java:339) at com.ibm.wsspi.bootstrap。org.eclipse.core.launcher.Main.run(Main.java:981) WSPreLauncher.main(WSPreLauncher.java:94)

java.lang.NullPointerException: java.lang.NullPointerException 

做什么呢?

UPDATE:

看来,虽然列入罐子到sys.path的是足以让被发现的类,它不足以允许它被实例化。如果我将jar解压缩到它工作的现有路径中。

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

回答

0

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

+0

我无法修改类路径(或者说,我不想)。这个Q/A说我正在尝试应该工作。 http://stackoverflow.com/questions/1730885/how-can-i-add-jars-dynamically-to-jython-inside-script – Synesso 2012-02-25 10:12:00

0

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