【问题标题】:how to import java code (using external jars) in jython?如何在 jython 中导入 java 代码(使用外部 jars)?
【发布时间】:2018-04-20 20:39:13
【问题描述】:

我在导入使用某些外部 jar 的 java 代码时遇到问题,比如 selenium_standalone_server jar。

我尝试使用没有在 java 中使用 jar 的普通代码,在这种情况下,我能够导入并运行代码,但是当我在 java 代码中使用一些 jar,然后尝试将该类导入 jython 时会出错。

这是我使用的示例代码。我在“jython_test.jar”下面创建了代码的jar

package Jython_workspace;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;



public class selenium_try {

        public void launch_browser()
        {

            WebDriver driver = new FirefoxDriver();
            System.out.println("Hello Google...");
            driver.get("http://google.com");

        }


}

此代码使用 selenium_server-standalone-3.11.0.jar。

在 jython 中导入 java jar。

import sys

sys.path.append("jython_test.jar")

from jython_test import selenium_try as sel

beach = sel.launch_browser()

遇到的错误。

Traceback (most recent call last):
  File "D:\PD\sublime_code\Jython_workspace\try_selenium_python.py", line 5, in <module>
    from jython_test import selenium_try as sel
java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at org.python.core.Py.loadAndInitClass(Py.java:991)
    at org.python.core.Py.findClassInternal(Py.java:926)
    at org.python.core.Py.findClassEx(Py.java:977)
    at org.python.core.packagecache.SysPackageManager.findClass(SysPackageManager.java:133)
    at org.python.core.packagecache.PackageManager.findClass(PackageManager.java:33)
    at org.python.core.packagecache.SysPackageManager.findClass(SysPackageManager.java:122)
    at org.python.core.PyJavaPackage.__findattr_ex__(PyJavaPackage.java:134)
    at org.python.core.PyObject.__findattr__(PyObject.java:946)
    at org.python.core.imp.importFromAs(imp.java:1160)
    at org.python.core.imp.importFrom(imp.java:1132)
    at org.python.pycode._pyx0.f$0(D:\PD\sublime_code\Jython_workspace\try_selenium_python.py:7)
    at org.python.pycode._pyx0.call_function(D:\PD\sublime_code\Jython_workspace\try_selenium_python.py)
    at org.python.core.PyTableCode.call(PyTableCode.java:167)
    at org.python.core.PyCode.call(PyCode.java:18)
    at org.python.core.Py.runCode(Py.java:1386)
    at org.python.util.PythonInterpreter.execfile(PythonInterpreter.java:296)
    at org.python.util.jython.run(jython.java:362)
    at org.python.util.jython.main(jython.java:142)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
    at org.python.core.SyspathJavaLoader.findClass(SyspathJavaLoader.java:131)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    ... 20 more

java.lang.NoClassDefFoundError: java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver

当 java 使用 3rd 方 jars 然后我们想在 jython 中导入时如何解决这个问题。

【问题讨论】:

    标签: java selenium-webdriver jython-2.7


    【解决方案1】:

    在尝试导入 Java 类时,您必须指定完整的包路径。

    尝试使用 import Jython_workspace.selenium_try.

    【讨论】:

    • 我已经更新了我面临的问题...你能看看它吗?
    【解决方案2】:

    我首先找到了答案,我们必须将 java 中使用的方法设为静态,并将已在 java 中导入的类似 jar 导入到您的 jython 代码中。 就是这样,现在您可以开始了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-29
      • 1970-01-01
      • 2012-01-08
      相关资源
      最近更新 更多