我在导入使用一些外部jar的java代码时遇到问题,比如selenium_standalone_server jar。
我尝试使用普通代码而不使用java中的jar,在这种情况下我可以导入并运行代码,但是当我在java代码中使用一些jar然后尝试将该类导入jython时,它会出错。
以下是我使用的示例代码。我在下面创建了jar代码" jython_test.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使用第三方jar并且我们想要在jython中导入时,如何解决这个问题。
答案 0 :(得分:0)
尝试导入Java类时必须指定完整的包路径。
尝试使用
import Jython_workspace.selenium_try
。
答案 1 :(得分:0)
我首先找到了答案,我们必须在java中使用静态方法,并将已经在java中导入的类似jar导入到jython代码中。 多数民众赞成你现在好了。