使用jython执行python脚本时获取InvalidJarIndexException

时间:2014-02-05 09:07:43

标签: java axis2 rampart jython-2.5

使用jython从Web服务调用python脚本时,我得到sun.misc.InvalidJarIndexException。我使用的是JDK 7,Axis2 1.6,rampart 1.6和jython 2.5.0。

如果使用Axis2 1.5和rampart 1.5从Servlet或Web服务执行相同的操作,它可以正常工作。

我从Web服务调用jython来执行python脚本。

refresh.py

#!/usr/bin/python
import os
import subprocess

print "refresh script"

从Web服务方法摘录以调用python脚本

PythonInterpreter interp = new PythonInterpreter();
interp.execfile("/root/Documents/refresh.py");

调用execfile()后,会出现以下错误

  

文件“/root/Documents/refresh.py”,第2行,in       import os File“/root/Documents/tomcat/webapps/refresh/WEB-INF/lib/jython.jar/Lib/os.py”,   第48行,在sun.misc.InvalidJarIndexException:索引无效

os.py中的第48行实际上是从jython.jar导入java类。我也尝试过导入线程,它在第5行失败,它再次引用jython.jar中的java类。

1 个答案:

答案 0 :(得分:0)

我找到了解决此问题的方法。

创建一个Servlet,它将从init()方法调用Jython。配置此Servlet以在启动时加载。

一旦部署了Web应用程序并加载了所有Web服务,Servlet就会加载所有必需的jython类,并且它将被重用于后续的Web服务调用。