web-dev-qa-db-ja.com

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

スレッド「メイン」の例外Java.lang.NoClassDefFoundError:com/google/common/base/Function


誰かがこの解決策や理由を見つけるのを手伝ってくれますか?

56
vijaymsc

私は同じ問題を抱えていましたが、最終的に Selenium-server-standalone-version.jar を追加するのを忘れていました。クライアントjar Selenium-Java-version.jar のみを追加しました。

お役に立てれば。

110
MaGonglei

JREがクラスを見つけられない場合、NoClassDefFoundErrorがスローされます。あなたの場合、クラスパスに追加していない可能性が最も高いクラスcom.google.common.base.Functionが見つかりません。

編集

次のライブラリをダウンロードした後:

そして、それらを解凍し、テストクラスであるlibというフォルダーにすべてのJARファイルを配置します。

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 
22
Bart Kiers

同じエラーが発生し、調査後、ライブラリ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>
8
Tho

"google-collections" ライブラリが classpath にありません。

多くの ライブラリをクラスパスに追加する方法 があるため、プログラムの実行方法に関する詳細を提供してください。

コマンドラインから、ライブラリをクラスパスに追加するには

Java -classpath path/lib.jar ...

7
pstanton

Seleniumスタンドアロンおよびlibフォルダーのすべてのjarファイルを含めると、このエラーは解決されます

2
Sandeep Duve

私にとっては、jar-Selenium-Java-2.45.0.jarを選択することに加えて、Seleniumルートフォルダーの下の「libs」フォルダー内のすべてのjarを選択する必要がありました。

2
Sumod

同じ問題がありました。 Selenium-2.53.0/Selenium-Java-2.53.0-srcs.jarファイルをプロジェクトの参照ライブラリに追加するのを忘れていたことがわかりました。

1
Latha

同じエラーが発生しましたが、INTELIJを使用している場合は、Seleniumのライブラリを追加すると解決しました(まだ追加していない場合)

project> projectStructure> Module> +> Selenium jarを追加します(libフォルダーと外部フォルダーの両方)。

Eclipseのような他のIDEでも同様にする必要があります。

1
Rahul k

Googleコードをインポートしようとしているようです:

import com.google.common.base.Function;

そして、それはクラス関数ではありません。必要なすべてのライブラリがビルドパスにあること、およびパッケージを正しく入力したことを確認してください。

1
donnyton

「Selenium-server-standalone-version.jar」をインストールしても同じ問題が発生し、失敗します。グアバとグアバ-gwt jarをインストールする必要があると思います( https://code.google.com/p/guava-libraries / )も同様です。これらすべてのjarを追加し、最終的にはPCで機能しました。この問題に出会う他の人たちに役立つことを願っています。

1
Shi Liangjun
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** ");

ここからgeckoをダウンロードしてください:- http://docs.seleniumhq.org/download/

0
inderpreet kaur

IDEなどの外部の単純なクラスを試したいと思いました。 WebサイトからSelenium Zipをダウンロードし、次のようにクラスを実行します。

Java -cp Selenium-2.50.1/*:Selenium-2.50.1/libs/*:. my/package/MyClass <params>

最初にlibの代わりにlibsを使用したという問題がありました。 I なかった Seleniumスタンドアロンjarを追加する必要があります。これは、クラスパスのワイルドカードを理解するJava 8です。 Java 7もそうだと思います。

0
akostadinov

私は同じ問題を抱えていましたが、Selenium-server-standalone-version.jarを追加するのを忘れていたことがわかりました。クライアントjar、Selenium-Java-version.jarのみを追加しました。

0
Lokesh Reddy

「Selenium-Java-.Zip」ファイルを抽出したら、IDEからビルドパスを構成する必要があります。 「lib」フォルダーの下のすべてのjarファイルと、SeleniumスタンドアロンサーバーとSelenium Javaバージョンjarファイルの両方をインポートします。

0
CTester

例外Java.lang.NoClassDefFoundError: com/google/common/base/Functionをキャッチしたとき、プロジェクトライブラリのエラーが原因でした。

プロジェクト設定で確認してください。 Intellij IDEAの場合、ファイル-プロジェクト構造に移動し、モジュールタブを選択します。この例外を解決するために必要なことは、Seleniumライブラリを再度追加することだけでした。

0
Irina Bu