Java 无法解析类引用org/openqa/selenium/WebDriver

Java 无法解析类引用org/openqa/selenium/WebDriver,java,eclipse,selenium,jar,Java,Eclipse,Selenium,Jar,在目录C:\jars>的jars文件夹中,我有一个Test文件夹。在Test文件夹中,我有OneReports.jar,testng.jar,TestngTestSuiteUsingXML.java和Test.XML 我从eclipse导出了OneReports.jar,它包含一些java项目 Test.xml我已经创建了testsuite,该文件是 在命令提示符下,我尝试运行: C:\Jars>javac-cp“C:\ProgramFiles\Java\selenium*.jar”;“OneR

在目录
C:\jars>
的jars文件夹中,我有一个Test文件夹。在Test文件夹中,我有
OneReports.jar
testng.jar
TestngTestSuiteUsingXML.java
Test.XML

我从eclipse导出了
OneReports.jar
,它包含一些java项目

Test.xml
我已经创建了testsuite,该文件是

在命令提示符下,我尝试运行:

  • C:\Jars>javac-cp“C:\ProgramFiles\Java\selenium*.jar”;“OneReports.jar”;“testng .jar“test\TestngTestSuiteUsingXML.java

  • C:\Jars>java-cp“C:\ProgramFiles\java\selenium*.jar”;“OneReports.jar”;”他说。 jar“test.TestngTestSuiteUsingXML

  • 这里我得到的错误如下:

    [[TestNGClassFinder]] Unable to read methods on class test.LoginOneReports - unable to resolve class reference org/openqa/selenium/WebDriver
    Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/WebDriver
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetPublicMethods(Unknown Source)
        at java.lang.Class.getMethods(Unknown Source)
        at org.testng.internal.TestNGClassFinder.<init>(TestNGClassFinder.java:59)
        at org.testng.TestRunner.initMethods(TestRunner.java:409)
        at org.testng.TestRunner.init(TestRunner.java:235)
        at org.testng.TestRunner.init(TestRunner.java:205)
        at org.testng.TestRunner.<init>(TestRunner.java:153)
        at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:522)
        at org.testng.SuiteRunner.init(SuiteRunner.java:157)
        at org.testng.SuiteRunner.<init>(SuiteRunner.java:111)
        at org.testng.TestNG.createSuiteRunner(TestNG.java:1299)
        at org.testng.TestNG.createSuiteRunners(TestNG.java:1286)
        at org.testng.TestNG.createSuiteRunners(TestNG.java:1289)
        at org.testng.TestNG.runSuitesLocally(TestNG.java:1140)
        at org.testng.TestNG.run(TestNG.java:1057)
        at test.TestngTestSuiteUsingXML.main(TestngTestSuiteUsingXML.java:20)
    Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.WebDriver
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.net.URLClassLoader$1.run(Unknown Source)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        ... 18 more
    
     C:\Jars>
    
    [[TestNGClassFinder]]无法读取类test.LoginOneReports上的方法-无法解析类引用org/openqa/selenium/WebDriver
    线程“main”java.lang.NoClassDefFoundError中出现异常:org/openqa/selenium/WebDriver
    位于java.lang.Class.getDeclaredMethods0(本机方法)
    位于java.lang.Class.privateGetDeclaredMethods(未知源)
    位于java.lang.Class.privateGetPublicMethods(未知源)
    位于java.lang.Class.getMethods(未知源)
    位于org.testng.internal.TestNGClassFinder(TestNGClassFinder.java:59)
    位于org.testng.TestRunner.initMethods(TestRunner.java:409)
    位于org.testng.TestRunner.init(TestRunner.java:235)
    位于org.testng.TestRunner.init(TestRunner.java:205)
    位于org.testng.TestRunner(TestRunner.java:153)
    位于org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:522)
    位于org.testng.SuiteRunner.init(SuiteRunner.java:157)
    位于org.testng.SuiteRunner(SuiteRunner.java:111)
    位于org.testng.testng.createSuiteRunner(testng.java:1299)
    位于org.testng.testng.createSuiteRunners(testng.java:1286)
    位于org.testng.testng.createSuiteRunners(testng.java:1289)
    位于org.testng.testng.runSuitesLocally(testng.java:1140)
    位于org.testng.testng.run(testng.java:1057)
    位于test.TestngTestSuiteUsingXML.main(TestngTestSuiteUsingXML.java:20)
    原因:java.lang.ClassNotFoundException:org.openqa.selenium.WebDriver
    位于java.net.URLClassLoader$1.run(未知源)
    位于java.net.URLClassLoader$1.run(未知源)
    位于java.security.AccessController.doPrivileged(本机方法)
    位于java.net.URLClassLoader.findClass(未知源)
    位于java.lang.ClassLoader.loadClass(未知源)
    位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
    位于java.lang.ClassLoader.loadClass(未知源)
    ... 还有18个
    C:\Jars>
    

    谁能帮我解决这个问题。我没有用maven。使用Selenium webdriver、TestNG、Java编写代码。

    由于您的javac工作正常,因此类路径中的TestNG.jar是正确的。然后该程序依赖于其他库selenium等。使用单个JAR而不是通配符是正确的

    java -cp "C:\Program Files\Java\selenium<version>.jar;OneReports.jar;testng.jar" test.TestngTestSuiteUsingXML
    
    java-cp“C:\Program Files\java\selenium.jar;OneReports.jar;testng.jar”test.TestngTestSuiteUsingXML
    
    这可能会产生更多classnotfound异常。只将这些添加到类路径中


    注意,您也通过相对路径(OneReports.jar或testng.jar)引用了其他jar。这会变得相当混乱。考虑使用Ant/Maven/Gealle来完成这部分工作。它们将更可靠地形成类路径

    您能否指定您在
    C:\Program files\Java
    下拥有的
    selenium*.jar
    文件的确切名称?是的C:\Program files\Java\selenium。。在这个selenium文件夹中,我有我在eclipse中作为引用库添加的所有jar文件。我有commons-io-2.4、selenium-java-2.39.0、selenium-server-standalone-2.39.0、log4j-1.2.17、commons-io-2.4-sources、commons-io-2.4-tests、commons-io-2.4-test-sources、selenium-java-2.39.0-srcs-jar文件
    C:\Program files\java\selenium
    ???这是一个单独的文件夹吗?如果是,那么您应该将类路径更改为
    “C:\Program Files\Java\selenium\*.jar”
    (在
    “selenium”
    之后添加一个反斜杠)。是的,我添加了一个反斜杠并尝试了,但我仍然面临如何使用每个jar文件的确切名称的问题?对于Selenium,您只需要其中两个:
    Selenium-java-2.39.0
    Selenium-server-standalone-2.39.0