Java中的NoClassDefFoundError:com / google / common / base / Function

时间:2011-02-27 18:18:06

标签: java selenium-webdriver runtime-error

执行以下代码时:

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


有人可以帮我找到解决方案或原因吗?

15 个答案:

答案 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/