【问题标题】:unable to resolve class reference org/openqa/selenium/WebDriver无法解析类参考 org/openqa/selenium/WebDriver
【发布时间】:2014-03-30 15:59:18
【问题描述】:

C:\jars> 目录中的 Jars 文件夹中,我有 Test 文件夹。在 Test 文件夹中,我有 OneReports.jartestng.jarTestngTestSuiteUsingXML.javaTest.XML

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

Test.xml 我创建了测试套件,该文件是

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

  1. C:\Jars>javac -cp "C:\Program Files\Java\selenium*.jar";"OneReports.jar";"testng .jar" 测试\TestngTestSuiteUsingXML.java

  2. C:\Jars>java -cp "C:\Program Files\Java\selenium*.jar";"OneReports.jar";"testng. 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>

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

【问题讨论】:

  • 您能否指定您在C:\Program Files\Java 下拥有的selenium*.jar 文件的确切名称?
  • 是的 C:\Program Files\Java\selenium.. 在这个 selenium 文件夹中,我有所有的 jar 文件,我在 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.0selenium-server-standalone-2.39.0

标签: java eclipse selenium jar


【解决方案1】:

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

java -cp "C:\Program Files\Java\selenium<version>.jar;OneReports.jar;testng.jar" test.TestngTestSuiteUsingXML

这可能会产生更多的 classnotfound 异常。仅将那些添加到您的类路径中。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-29
    • 1970-01-01
    • 2019-07-03
    • 2018-05-29
    • 2016-08-10
    • 2022-01-21
    • 1970-01-01
    相关资源
    最近更新 更多