58

当我执行以下代码时:

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

线程“主”java.lang.NoClassDefFoundError 中的异常:com/google/common/base/Function


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

4

15 回答 15

112

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

希望这可以帮助。

于 2011-03-10T02:48:15.227 回答
23

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

编辑

下载以下库后:

并解压缩它们并将所有 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();
        }
    }
}

运行没有任何问题。

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

# 在 Linux 和 Mac 上编译和运行
javac -cp .:lib/* Test.java
java -cp .:lib/* 测试

# 在 Windows 上编译并运行
javac -cp .;lib/* Test.java
java -cp .;lib/* 测试
于 2011-02-27T18:20:36.780 回答
9

我遇到了同样的错误,经过调查,我发现库 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>
于 2014-04-01T08:26:22.653 回答
7

您的classpath上没有“google-collections”库。

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

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

java -classpath path/lib.jar ...

于 2011-02-27T18:22:14.200 回答
2

对我来说,除了选择 jar - selenium-java-2.45.0.jar 之外,我还必须选择 selenium 根文件夹下的“libs”文件夹中的所有 jar。

于 2015-05-22T05:06:26.253 回答
2

我得到了同样的错误,但如果你添加硒库(如果你没有),如果你使用的是INTELIJ,它就会解决

项目>项目结构>模块>+>添加硒罐(来自lib文件夹和外部的。)。

其他IDE也需要做同样的事情,比如eclipse。

于 2017-06-09T19:37:27.720 回答
1

看起来您正在尝试导入一些谷歌代码:

import com.google.common.base.Function;

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

于 2011-02-27T18:20:32.880 回答
1

我遇到了同样的问题,即使安装了“selenium-server-standalone-version.jar”也失败了,我认为你需要安装 guava 和 guava-gwt jar(https://code.google.com/p/guava -libraries/ ) 也是如此。我添加了所有这些 jar,最后它在我的 PC 上运行了。希望它适用于其他遇到此问题的人。

于 2014-09-15T05:50:18.883 回答
1

请包含selenium单机和lib文件夹的所有jar文件,然后此错误将得到解决

于 2015-07-02T07:24:32.130 回答
1

我遇到过同样的问题。我发现我忘记将 selenium-2.53.0/selenium-java-2.53.0-srcs.jar 文件添加到我的项目的参考库中。

于 2016-08-11T12:05:56.767 回答
0

当我发现异常java.lang.NoClassDefFoundError: com/google/common/base/Function时,它是由项目库中的错误引起的。

请在您的项目设置中检查它。对于 Intellij IDEA,转到File - Project Structure并选择Modules选项卡。为了解决这个异常,我需要做的就是重新添加 selenium 库

于 2014-05-12T13:46:22.533 回答
0

我想在 IDE 和其他东西之外尝试一个简单的类。所以从网站下载了 selenium zip 并像这样运行这个类:

java -cp selenium-2.50.1/*:selenium-2.50.1/libs/*:. my/package/MyClass <params>

我遇到了最初使用的问题,lib而不是libs. 我不需要添加硒独立罐。这是理解类路径中通配符的 Java 8。我认为java 7也可以。

于 2016-02-01T10:35:40.927 回答
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/

于 2017-08-04T08:07:16.550 回答
0

提取“selenium-java-.zip”文件后,您需要从 IDE 配置构建路径。导入“lib”文件夹下的所有 jar 文件以及 selenium 独立服务器和 Selenium java 版本的 jar 文件。

于 2015-08-23T20:51:46.270 回答
0

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

于 2016-04-08T14:02:23.757 回答