Java 独立Jython:导入错误(Apache POI)
Jython standalone jar在我尝试将Jython与ApachePOI一起使用时抛出ImportError异常 下面您将看到我如何调用Jython脚本:Java 独立Jython:导入错误(Apache POI),java,apache-poi,jython,Java,Apache Poi,Jython,Jython standalone jar在我尝试将Jython与ApachePOI一起使用时抛出ImportError异常 下面您将看到我如何调用Jython脚本: java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py 错误: 回溯(最近一次呼叫最后一次): 文件“main.py”,第32行,在 从org.apache.poi.hssf.usermodel导入* ImportError:没
java -cp C:\jAutoMailerScript\lib\poi-3.9-20121203.jar -jar jython.jar main.py
错误:
回溯(最近一次呼叫最后一次):
文件“main.py”,第32行,在
从org.apache.poi.hssf.usermodel导入*
ImportError:没有名为apache的模块
这是第32行的代码:
为了使用Java的第三方应用程序,Jython是否有任何限制
提前感谢,您可以尝试像这样将jar附加到您的系统路径
sys.path.append('C:\jAutoMailerScript\lib\poi-3.9-20121203.jar')
然后尝试运行相同的脚本。尽管最好使用os模块来访问路径。我不确定windows操作系统上jython如何处理斜杠 不能同时使用
-cp
和-jar
。-jar
选项覆盖任何其他类路径设置。看
使用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
但是,事实证明,这些命令都不能用于。你会得到一个导入错误
,正如它在问题中所说的那样。有一个老的开放bug似乎很相关:(它说Solaris上存在这个问题,但据我所知,它也适用于其他平台)
使用和jython
命令可以正常工作:
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): 查看路径如何由于“\”分隔符而被置乱 (也尝试了python.path建议,但给出的错误与您报告的相同。)
可能是你遇到了什么或类似/相关的事情?它似乎与场景(独立版本)以及您和我使用的版本相匹配。jython 2.5.4-rc1 standalone使用commons-lang3-3.1.jar等也存在同样的问题。我必须在独立模式下使用它,所以这非常令人沮丧-( 编辑:这个人发现了 必须添加以下标志才能使Jython standalone正常工作
java -Dpython.cachedir.skip=false -Dpython.cachedir=/tmp {...}
@Arshard_Ansari:它仍然不工作…这与我正在使用的jython版本有任何关系吗?(jython Standalone 2.7b)它仍然抛出异常消息:ImportError。但是如果我想发布它以便在另一台计算机上使用,会发生什么情况?有可能打包吗?基本安装jython.jar不包括捆绑在独立jython.jar中的标准库Python文件。当然,这需要考虑。我不确定在您的情况下最好的解决方案是什么。
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']
>>>
java -Dpython.cachedir.skip=false -Dpython.cachedir=/tmp {...}