Подтвердить что ты не робот

NoClassDefFoundError в Java: 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" java.lang.NoClassDefFoundError: com/google/common/base/Function


Может ли кто-нибудь помочь мне найти решение или причину этого?

4b9b3361

Ответ 2

A NoClassDefFoundError бросается, когда JRE не может найти класс. В вашем случае он не может найти класс 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

Ответ 3

Я столкнулся с той же ошибкой, и после расследования я обнаружил, что для библиотеки selenium-api 2.41.0 требуется guava 15.0, но она была переопределена более старой версией, поэтому я объявила guava 15.0 как прямую зависимость, добавив следующую конфигурацию в pom. XML:

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

Ответ 4

у вас нет "google-collections" на вашем classpath.

Существует ряд способов добавления библиотек в путь к классам, поэтому, пожалуйста, предоставьте дополнительную информацию о том, как вы выполняете свою программу.

если из командной строки вы можете добавить библиотеки в путь к классам через

java -classpath path/lib.jar ...

Ответ 5

Для меня, помимо выбора jar-selenium-java-2.45.0.jar, мне пришлось выбрать все банки в папке "libs" в папке с корнем selenium.

Ответ 6

Пожалуйста, включите все файлы jar в автономную автономную папку selenium и папку lib, затем эта ошибка будет решена.

Ответ 7

Похоже, вы пытаетесь импортировать код google:

import com.google.common.base.Function;

И это не находит класс Function. Убедитесь, что все необходимые библиотеки находятся в вашем пути сборки и что вы правильно ввели пакет.

Ответ 8

Я встретил ту же проблему и не смог даже после установки "selenium-server-standalone-version.jar", я думаю, вам нужно установить guava и guava-gwt jar (https://code.google.com/p/guava-libraries/). Я добавил все эти банки и, наконец, работал на моем ПК. Надеюсь, что это сработает для других, кто встречает эту проблему.

Ответ 9

У меня была такая же проблема. Я обнаружил, что забыл добавить файл selenium-2.53.0/selenium-java-2.53.0-srcs.jar в мою справочную библиотеку проекта.

Ответ 10

У меня такая же ошибка, но было решено, если вы добавите библиотеки селена (опять же, если вы этого не сделали), если вы используете INTELIJ

project > projectStructure > Module > + > добавить баннеры selenium (как из папки lib, так и извне).

То же самое нужно сделать и для другой среды IDE, например, для eclipse.

Ответ 11

Когда я поймал исключение java.lang.NoClassDefFoundError: com/google/common/base/Function, это было вызвано ошибками в Project Libraries.

Пожалуйста, проверьте его в настройках проекта. Для Intellij IDEA перейдите в Файл - Структура проекта и выберите вкладку Модули. Все, что мне нужно было сделать для устранения этого исключения, - это повторное добавление библиотеки селенов

Ответ 12

После того, как вы извлечете файл "selenium-java-.zip", вам нужно настроить свой путь сборки из своей среды. Импортируйте все файлы jar в папку "lib" и как автономный сервер selenium, так и jar файлы Selenium java.

Ответ 13

Я хотел попробовать простой класс вне IDE и прочее. Поэтому скачайте selenium zip с веб-сайта и выполните класс следующим образом:

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

У меня была проблема, из-за которой я первоначально использовал lib вместо libs. Я не должен был добавить изолированную банку selenium. Это Java 8, которая понимает подстановочные знаки в classpath. Я думаю, что java 7 также сделает.

Ответ 14

У меня была такая же проблема, и, наконец, я обнаружил, что забыл добавить сервер selenium-server-standalone-version.jar. Я добавил только клиентскую банку, selenium-java-version.jar.

Ответ 15

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();

pattern:

System.setProperty("webdriver.gecko.driver","**Path of the gecko driver** ");

Примечание скачать gecko отсюда: - http://docs.seleniumhq.org/download/