我正在研究一个散布一堆jython和Java代码的应用程序。由于程序的性质(使用wsadmin),我们实际上仅限于Python 2.1
当前,我们有一个同时包含Java源代码和.py模块的jar。该代码当前是使用java调用的,但我希望删除此代码,以便将尽可能多的功能迁移到jython。
我的问题是我想从调用的jython脚本中导入或执行现有jar文件中的python模块。我尝试了几种不同的方法,但均未成功。
我的目录结构如下:
application.jar
|-- com
|--example
|-- action
|-- MyAction.class
|-- pre_myAction.py
我尝试的第一种方法是从罐子中导入。我将jar添加到sys.path中,并尝试同时使用 import
com.example.action.myAction 和 import myAction 导入模块。但是,即使我将 init
.py文件放入每个级别的目录中也没有成功。
我尝试的第二种方法是使用java类加载资源。所以我写了下面的代码:
import sys
import os
import com.example.action.MyAction as MyAction
scriptName = str(MyAction.getResource('/com/example/action/myAction.py'))
scriptStr = MyAction.getResourceAsStream('/com/example/action/myAction.py')
try:
print execfile(scriptStr)
except:
print "failed 1"
try:
print execfile(scriptName)
except:
print "failed 2"
这些都失败了。现在我对如何进行感到有些茫然。有任何想法吗 ?
干杯,
特雷弗