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

vij*_*msc 56 java runtime-error selenium-webdriver

当我执行以下代码时:

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());
    }
}
Run Code Online (Sandbox Code Playgroud)

我遇到以下错误:

错误:[Ljava.lang.StackTraceElement; @ 80f4cb

线程"main"中的异常java.lang.NoClassDefFoundError:com/google/common/base/Function


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

小智 110

我有同样的问题,最后我发现我忘了添加selenium-server-standalone-version.jar.我只添加了客户端jar,selenium-java-version.jar.

希望这可以帮助.

  • 我有同样的问题,你的解决方案修复了它.谢谢. (3认同)
  • 为什么需要独立罐?我只在一台机器上运行它? (3认同)

Bar*_*ers 23

NoClassDefFoundError当JRE找不到类时抛出A. 在您的情况下,它找不到com.google.common.base.Function您很可能没有添加到类路径的类.

编辑

下载以下库后:

并解压缩它们并将所有JAR文件放在一个名为libtest class 的文件夹中:

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();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

跑了没有任何问题.

您可以按如下方式编译和运行该类:

# 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

  • 如果想要第一次运行Selenium测试,这是最常见的答案,因为需要所有提到的库. (2认同)

Tho*_*Tho 8

我遇到了同样的错误,经过调查,我发现库selenium-api 2.41.0需要guava 15.0但它被旧版本覆盖,所以我通过在pom.xml中添加以下配置将guava 15.0声明为直接依赖:

<dependency>
        <artifactId>guava</artifactId>
        <groupId>com.google.guava</groupId>
        <type>jar</type>
        <version>15.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)


pst*_*ton 7

您的类路径中没有"google-collections"库.

有很多方法可以将库添加到类路径中,因此请提供有关如何执行程序的更多信息.

如果从命令行,您可以通过添加库到类路径

java -classpath path/lib.jar ...

  • Google Collections现已被弃用,取而代之的是Guava项目(http://code.google.com/p/guava-libraries/) (2认同)

don*_*ton 1

您似乎正在尝试导入一些谷歌代码:

import com.google.common.base.Function;
Run Code Online (Sandbox Code Playgroud)

它没有找到它的 Function 类。检查以确保所有必需的库都在您的构建路径中,并且您正确键入了包。