执行以下代码时:
public static void main(String[] args) {
try {
FirefoxDriver driver = new FirefoxDriver();
driver.get("http:www.yahoo.com");
} catch (NoClassDefFoundError ex) {
System.out.println("error: " + ex.getStackTrace());
}
}
我遇到以下错误:
错误:[Ljava.lang.StackTraceElement; @ 80f4cb
线程“main”中的异常java.lang.NoClassDefFoundError:com / google / common / base / Function
有人可以帮我找到解决方案或原因吗?
答案 0 :(得分:109)
我遇到了同样的问题,最后我发现忘了添加selenium-server-standalone-version.jar。我只添加了客户端jar,selenium-java-version.jar。
希望这有帮助。
答案 1 :(得分:22)
当JRE找不到类时,抛出NoClassDefFoundError
。在您的情况下,它找不到类com.google.common.base.Function
,您很可能没有添加到类路径中。
下载以下库后:
并解压缩并将所有JAR文件放在名为lib
的文件夹中,即测试类:
import org.openqa.selenium.firefox.FirefoxDriver;
public class Test {
public static void main(String[] args) {
try{
FirefoxDriver driver = new FirefoxDriver();
driver.get("http:www.yahoo.com");
} catch(Exception e){
e.printStackTrace();
}
}
}
没有任何问题。
您可以按如下方式编译和运行该类:
# compile and run on Linux & Mac javac -cp .:lib/* Test.java java -cp .:lib/* Test # compile and run on Windows javac -cp .;lib/* Test.java java -cp .;lib/* Test
答案 2 :(得分:8)
我遇到了同样的错误,在调查之后,我发现库selenium-api 2.41.0需要guava 15.0但它被旧版本覆盖,所以我通过在pom中添加以下配置将guava 15.0声明为直接依赖。 XML:
<dependency>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
<type>jar</type>
<version>15.0</version>
</dependency>
答案 3 :(得分:7)
您的"google-collections"上没有classpath库。
有许多ways to add libraries to your classpath,因此请提供有关您如何执行计划的更多信息。
如果从命令行,您可以通过
将库添加到类路径 java -classpath path/lib.jar ...
答案 4 :(得分:2)
对我来说,除了选择jar - selenium-java-2.45.0.jar之外,我还必须在selenium root文件夹下的“libs”文件夹中选择所有的jar。
答案 5 :(得分:2)
请包含selenium独立和lib文件夹的所有jar文件,然后将解决此错误
答案 6 :(得分:1)
看起来您正在尝试导入一些Google代码:
import com.google.common.base.Function;
并没有找到类功能。检查以确保所有必需的库都在您的构建路径中,并且您正确键入了包。
答案 7 :(得分:1)
我遇到了同样的问题,即使在安装了selenium-server-standalone-version.jar&#39;后,我也认为你需要安装guava和guava-gwt jar(https://code.google.com/p/guava-libraries/ )以及。我添加了所有这些jar,最后它在我的电脑上工作。希望它适用于遇到这个问题的其他人。
答案 8 :(得分:1)
我有同样的问题。我发现忘了将selenium-2.53.0 / selenium-java-2.53.0-srcs.jar文件添加到我的项目参考库中。
答案 9 :(得分:1)
我得到了同样的错误,但是如果你添加了selenium库(如果你还没有的话),如果你正在使用INTELIJ
那么它就解决了project&gt; projectStructure&gt; Module&gt; +&gt;添加selenium jar(来自lib文件夹和外部文件夹)。
同样需要为其他IDE做,比如eclipse。
答案 10 :(得分:0)
当我发现异常java.lang.NoClassDefFoundError: com/google/common/base/Function
时,它是由项目库中的错误引起的。
请在项目设置中查看。对于Intellij IDEA,请转到文件 - 项目结构,然后选择模块标签。我需要做的就是重新添加selenium库
答案 11 :(得分:0)
提取“selenium-java-.zip”文件后,需要从IDE配置构建路径。导入“lib”文件夹下的所有jar文件以及selenium独立服务器&amp; Selenium java版jar文件。
答案 12 :(得分:0)
我想在IDE之外尝试一个简单的类。所以从网站下载了selenium zip并运行这样的类:
java -cp selenium-2.50.1/*:selenium-2.50.1/libs/*:. my/package/MyClass <params>
我遇到的问题是我最初使用的是lib
而不是libs
。我没有需要添加selenium独立jar。这是Java 8,它可以理解classpath中的通配符。我认为java 7也会这样做。
答案 13 :(得分:0)
我遇到了同样的问题,最后我发现忘了添加selenium-server-standalone-version.jar。我只添加了客户端jar,selenium-java-version.jar。
答案 14 :(得分:0)
this is for chrome
System.setProperty("webdriver.chrome.driver","D:\\Testing_offical\\chromedriver.exe");
driver =new ChromeDriver();
this is for fire fox
System.setProperty("webdriver.gecko.driver",""D:\\Testing_offical\\geckodriver.exe"");
driver =new FirefoxDriver();
模式:
System.setProperty("webdriver.gecko.driver","**Path of the gecko driver** ");
注意从这里下载壁虎: - http://docs.seleniumhq.org/download/