繁体   English   中英

独立Jython:导入错误(Apache-POI)

[英]Standalone Jython: Import Error (Apache-POI)

在我尝试将Jython与Apache-POI一起使用时,Jython独立jar会抛出ImportError异常。

下面你会发现我如何调用我的Jython脚本:

java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py

错误:

Traceback(最近一次调用最后一次):

文件“main.py”,第32行,in

来自org.apache.poi.hssf.usermodel import *

ImportError:没有名为apache的模块

这是第32行的代码:

from org.apache.poi.hssf.usermodel import *

为了使用Java的第三方应用程序,Jython是否有任何限制?

提前致谢,

您不能同时使用-cp-jar -jar选项会覆盖任何其他类路径设置。 请参阅http://docs.oracle.com/javase/7/docs/technotes/tools/windows/java.html

使用python.path系统属性应该工作:

java -Dpython.path=C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py

这是一个替代命令:

java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar;jython.jar org.python.util.jython main.py

但是,事实证明这些命令都不适用于独立的Jython 你得到一个ImportError ,就像它在问题中所说的那样。 有一个看似相关的旧的开放式错误: http//bugs.jython.org/issue1422 (它表示Solaris上存在问题,但就我所知,它确实适用于其他平台)。

使用已安装的Jythonjython命令可以正常工作:

jython -Dpython.path=C:\jAutoMailerScript\lib\poi-3.9-20121203.jar main.py

请注意,独立的jython.jar包含标准库Python模块(在Lib文件夹中)。 这些模块不包含在安装了Jython的jython.jar中。

我希望这个答案有所帮助,即使它可能无法完全解决您的问题。

我一直试图重现你的问题,并遇到与2.5.3版本的独立Jython相同的问题。 也尝试了POI 3.7; 仍然是同样的交易。 我也尝试了sys.path.append建议,Arshad做了。 这里发生了一些奇怪的事情(使用不同的库进行测试 - 这次是barcode4j):

c:\development\local\lib\jython-sa-2.5.3>java -jar jython-standalone-2.5.3.jar
Jython 2.5.3 (2.5:c56500f08d34+, Aug 13 2012, 14:54:35)
[Java HotSpot(TM) 64-Bit Server VM (Oracle Corporation)] on java1.7.0_10
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.path
['', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\Lib', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\jython-standalone-2.5.3.jar\\Lib', '__classpath__', '__pyclasspath__/']
>>> sys.path.append('C:\development\local\lib\barcode4j-2.0\build\barcode4j.jar')
>>> sys.path
['', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\Lib', 'C:\\development\\local\\lib\\jython-sa-2.5.3\\jython-standalone-2.5.3.jar\\Lib', '__classpath__', '__pyclasspath__/', 'C:\\development\\local\\lib\x08arcode4j-2.0\x08uild\x08arcode4j.jar']
>>>

看看由于'\\'分隔符,路径如何被扰乱?

(还尝试了python.path建议,但它提供了与您报告的相同的错误。)

难道你正在遇到这个报道的问题或类似/相关的事情吗? 它似乎与场景(独立版本)以及您和我使用的版本相匹配。

与jython 2.5.4-rc1独立使用commons-lang3-3.1.jar等相同的问题。我必须在独立模式下使用它,所以这非常令人沮丧! :-(

编辑:这个人想通了! 为什么Jython拒绝找到我的Java包?

您必须为Jython独立版添加以下标志才能工作!

java -Dpython.cachedir.skip=false -Dpython.cachedir=/tmp {...}

您可以尝试将jar附加到系统路径中,如下所示

sys.path.append('C:\jAutoMailerScript\lib\poi-3.9-20121203.jar')

然后尝试运行相同的脚本。 虽然使用os模块到达路径会更好。 我不确定如何在Windows操作系统上的jython中处理斜杠。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM