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

当我执行下面的代码时:

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”中的exceptionjava.lang.NoClassDefFoundError:com / google / common / base / Function

有人能帮我find解决办法或原因吗?

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

希望这可以帮助。

当JRE找不到类时会引发NoClassDefFoundError 。 在你的情况下,它找不到com.google.common.base.Function类,你很可能没有添加到你的类path。

编辑

下载以下库之后:

  • Selenium: http : //code.google.com/p/selenium/downloads/list
  • 番石榴: http : //code.google.com/p/guava-libraries/downloads/list
  • Apache HttpComponents: http : //hc.apache.org/downloads.cgi
  • JSON jar: http : //www.jarfinder.com/index.php/jars/versionInfo/21653

并解压缩它们,并将所有JAR文件放在一个名为lib的文件夹中,testing类:

 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 / * Test

 #编译并在Windows上运行
 javac -cp。; lib / * Test.java 
 java -cp。; lib / * Test

您的类path中没有“google-collections”库。

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

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

java -classpath path/lib.jar ...

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

 <dependency> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> <type>jar</type> <version>15.0</version> </dependency> 

对我来说,除了selectjar – selenium-java-2.45.0.jar之外,我不得不select在selenium根文件夹下的“libs”文件夹中的所有jar。

它看起来像你试图导入一些谷歌代码:

 import com.google.common.base.Function; 

而且它没有find它的类function。 检查以确保所有必需的库都在您的构buildpath中,并且正确地键入了包。

我遇到同样的问题,甚至在安装“selenium-server-standalone-version.jar”之后失败,我想你需要安装guava和guava-gwt jar( https://code.google.com/p/guava – 图书馆/ )。 我添加了所有这些jar,最后在我的电脑上运行。 希望这可以帮助其他人解决这个问题。

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

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

我得到了同样的错误,但是,如果你添加了selenium库(如果你还没有),如果你正在使用INTELIJ

项目>项目结构>模块> +>添加seleniumjar(从lib文件夹和外部的)。

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

当我发现java.lang.NoClassDefFoundError: com/google/common/base/Functionexceptionjava.lang.NoClassDefFoundError: com/google/common/base/Function是由Project Libraries中的错误引起的。

请在您的项目设置中检查它。 对于Intellij IDEA,转到“ 文件 – 项目结构”并select“ 模块”选项卡。 所有我需要做的解决这个例外是重新添加selenium库

解压缩“selenium-java-.zip”文件后,您需要从IDEconfiguration构buildpath。 导入“lib”文件夹下的所有jar文件以及selenium独立服务器和Selenium java版本jar文件。

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

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

我有问题,我最初使用lib而不是libs 。 我不需要添加selenium独立的jar子。 这是理解classpath中的通配符的Java 8。 我认为Java 7也会这样做。

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

 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/