2012-08-01 136 views
0

我在一个jar中的应用程序依赖于不同罐子中的一些库。Jython Jar依赖项导入失败

这是我的问题: 当我只导入我的主应用程序文件时,jython似乎正确加载类,但通过NoClassDefError(一个支持库jar中表示的一个)缺少类。

但是,如果我现在jar添加到classpath中的Jython再也找不到原来的进口,并且抱怨:ImportError: No module named edu

我的代码:

import sys 

def setClassPath(): 
    libDir = "/Users/gestalt/Documents/msmexplorer_git/msmexplorer/MSMExplorer/" 
    classPaths = [ 
      "dist/MSMExplorer.jar" 
      "dist/lib/prefuse.jar" #the missing class is here, but this line causes package edu to go missing 
    ] 
    for classPath in classPaths: 
      sys.path.append(libDir+classPath) 

def runJavaClass(): 
    from edu.stanford.folding.msmexplorer import MSMExplorer 
    me = MSMExplorer() 

def main(): 
    setClassPath() 
    runJavaClass() 

if __name__ == "__main__": 
    main() 

谢谢!

+0

这是否需要Java标记? – 2012-08-01 06:44:31

+0

@Duncan由于其中一些涉及jar-wrangling和java classpath问题,我认为这不是不合理 – bcr 2012-08-01 06:46:24

回答

0

听起来很愚蠢,这是某种特殊的语法错误。瓶子规格之间需要逗号:

"dist/MSMExplorer.jar", 
"dist/lib/prefuse.jar" 
+0

是的,Python(以及Jython)隐式地将字符串连接在一起成为一个字符串,如果它们之间只有空格。大多数时候这是非常方便的:) – 2012-08-01 16:24:41