Reflection WebSphere wsadmin ClassNotFound异常

Reflection WebSphere wsadmin ClassNotFound异常,reflection,websphere,jython,classnotfoundexception,wsadmin,Reflection,Websphere,Jython,Classnotfoundexception,Wsadmin,我正在尝试使用wsadmin和Jython来部署EAR文件。在实际部署之前,我需要使用Java类运行DB更新。我遇到了一个对我来说毫无意义的ClassNotFoundException 背景: EAR文件被分解。wsadmin工具通过以下选项启动: -wsadmin_classpath %CP% -javaoption -Dpython.path=%CP% 这两个都指向相同的类路径,其中包含所有必要的jar jython脚本获取到数据库的连接,并调用实用程序类来创建数据库脚本。实用程序类使用反

我正在尝试使用wsadmin和Jython来部署EAR文件。在实际部署之前,我需要使用Java类运行DB更新。我遇到了一个对我来说毫无意义的ClassNotFoundException

背景: EAR文件被分解。wsadmin工具通过以下选项启动:

-wsadmin_classpath %CP%
-javaoption -Dpython.path=%CP%
这两个都指向相同的类路径,其中包含所有必要的jar

jython脚本获取到数据库的连接,并调用实用程序类来创建数据库脚本。实用程序类使用反射从类路径加载其他类(这是我们正在使用的库的一个硬性要求,不能更改)。基本上是这样的:

from liquibase import Liquibase

def main(args):
    conn = getConnection(args)
    updater = Liquibase(conn)
    updater.update()
在update()方法期间,Liquibase使用反射来实例化一些Java类。这就是我得到ClassNotFoundException的地方,例如ClassNotFoundException:com.foo.CustomUpdate

在我的脚本中,我可以导入com.foo.CustomUpdate类,并且不会得到任何错误:

from com.foo import CustomUpdate
c = CustomUpdate("select 1")
print c.getUpdate()
所以我知道类在类路径上。我唯一的想法是,它与我们正在使用的库的反射方面有关。还有谁碰到过这样的事吗

我唯一的另一个想法是,如果上述内容不可执行,则将其拆分为一个shell脚本,并使用Java运行DB更新,然后使用wsadmin部署EAR