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

NoClassDefFoundErrorJRE がクラスを見つけられない場合、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

クラスパスに「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 に答える
1

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

于 2016-08-11T12:05:56.767 に答える
1

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

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 に答える
0

IDEなどの外で簡単なクラスを試してみたかったのです。したがって、Web サイトから selenium zip をダウンロードし、次のようにクラスを実行します。

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

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

于 2016-02-01T10:35:40.927 に答える
0

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

于 2015-08-23T20:51:46.270 に答える