Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 独立Jython:导入错误(Apache POI)_Java_Apache Poi_Jython - Fatal编程技术网

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

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:没

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:没有名为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 {...}