WebSphere wsadmin ClassNotFound异常

时间:2010-12-20 16:21:17

标签: reflection websphere jython classnotfoundexception wsadmin

我正在尝试使用wsadmin和Jython来部署EAR文件。在实际部署之前,我需要使用Java类运行数据库更新。我遇到了一个对我没有意义的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()

所以我知道这个类在classpath上。我唯一的想法是它与我们正在使用的库的反射方面有关。还有其他人遇到过这样的事吗?

我唯一的另一个想法,如果上面的内容是不可修复的,就是将内容拆分成shell脚本并使用Java运行数据库更新,然后使用wsadmin来部署EAR。

0 个答案:

没有答案