【问题标题】:instantiating a webclient object in jython giving strange results在 jython 中实例化一个 webclient 对象给出奇怪的结果
【发布时间】:2012-01-08 00:55:54
【问题描述】:

我正在尝试在 jython 脚本中使用 java 的 WebClient jar。

我正在运行这样的 jython 脚本:

jython -Dpython.path=/home/tipu/Dropbox/dev/proj/lib/* test.py

test.py 的内容:

import com.gargoylesoftware.htmlunit.WebClient as WebClient
def main():
   webclient = WebClient() # creating a new webclient object.

if __name__ == '__main__':
   main()

我得到的错误是:

Traceback (innermost last):
  File "scraper.py", line 1, in ?
ImportError: no module named gargoylesoftware

这是python.path目录下lib文件夹的内容:

commons-codec-1.4.jar          commons-lang-2.6.jar       htmlunit-2.9.jar          httpcore-4.1.2.jar   sac-1.3.jar           xercesImpl-2.9.1.jar
commons-collections-3.2.1.jar  commons-logging-1.1.1.jar  htmlunit-core-js-2.9.jar  httpmime-4.1.2.jar   serializer-2.7.1.jar  xml-apis-1.3.04.jar
commons-io-2.0.1.jar           cssparser-0.9.5.jar        httpclient-4.1.2.jar      nekohtml-1.9.15.jar  xalan-2.7.1.jar

知道为什么它不起作用吗?

【问题讨论】:

    标签: python webclient jython htmlunit


    【解决方案1】:

    我认为在设置像python.path 这样的系统属性时,通配符不起作用。试试这个:

    $ CLASSPATH=/home/tipu/Dropbox/dev/proj/lib/*

    $ jython test.py

    【讨论】:

    • 使用export CLASSPATH=/home/tipu/Dropbox/dev/proj/lib/* (bash) 或setenv CLASSPATH /home/tipu/Dropbox/dev/proj/lib/* (csh) 是否有效?
    • CLASSPATH="~/Dropbox/dev/proj/lib/*"
    • 所以你需要双引号?对我来说,它适用于export CLASSPATH=...(不带引号)。这是在带有 bash 的 Linux 上。您使用什么操作系统和外壳?
    【解决方案2】:

    您需要做的是将 .jar 文件添加到 java 的类路径中。这是 java 查找要导入的模块/类的位置。 在 Mac 操作系统中: 打开终端,输入:

    export CLASSPATH=$CLASSPATH:/x/y/htmlunit-2.11/lib/*
    

    其中 /x/y/htmlunit-2.11/lib/ 是所有 .jar 文件所在的目录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-19
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 2016-09-16
      • 2018-12-30
      • 2021-08-13
      • 2013-08-20
      相关资源
      最近更新 更多