2013-09-03 4 views
7

ScalaからSelenium Javaライブラリを呼び出そうとしています。私はScala IDE(Eclipse)とScala 2.10.2を使用しています。このコンパイラエラーの原因は何ですか? javacを参照してくださいする必要がありませんjarファイルを、どうやらscalac -Scalaエラー:クラスファイルが壊れています。定数プールのインデックスが不適切です。

error while loading Function, class file '/Dev/selenium-2.35.0/libs/guava- 
14.0.jar(com/google/common/base/Function.class)' is broken 
(class java.lang.RuntimeException/bad constant pool index: 0 at pos: 479) 

時々私はより多くのjarファイルを含めることによって、壊れたクラスファイルのエラーを修正します。しかし、このケースでは、私が追加できる他の瓶は何か分かりません。

+0

おそらく関連? https://issues.scala-lang.org/browse/SI-7002 – DaoWen

+0

私はただいくつかのjarファイルを試しました。 Eclipseでコンパイルされているとは思われません。私はソースを取得して手動でコンパイルできるかどうかを確認します。 –

答えて

4

RobNの答えは正しいですが、私は自分の経験でもう少し長い答えを書くと思いました。これはthis questionに関連し、RobNが言及したGuavaの問題7761095についての議論です。エラーが原因で発生し

[ant:scalac] error: error while loading BaseEncoding, class file 
    '.../guava-16.0.jar(com/google/common/io/BaseEncoding.class)' is broken 

私はこの同じ問題

com.google.common.io.BaseEncoding.base64() 

Eclipseはbase64のメンバーが存在しないとのGradleは を構築主張質問にエラーが発生し、アクセスしようとしていましたGuava's pom.xmlのいくつかの注釈への依存性。 this answerで説明されているように、Javaコンパイラは、対応するクラスファイルが見つからない 注釈を無視しますが、Scalaコンパイラ はコンパイルするために宣言を必要とします。

オプションである依存関係を明示的に追加すると、問題が解決するはずです。この特定のケースGuava's pom.xml

は、オプションの依存関係を次し、プロジェクトに以下の依存関係の宣言は、問題を解決します追加しました:

のGradle:

compile 'com.google.code.findbugs:jsr305:2.0.2' 

のMaven:

<dependency> 
<groupId>com.google.code.findbugs</groupId> 
<artifactId>jsr305</artifactId> 
<version>2.0.2</version> 
</dependency> 
+0

Scalaに関する説明はリンクに含まれていますが、これは5か月前の私の答えと同じだと思います。 –

+2

@RobNはい。私はここに行くためにかなりグーグルで行った。私はもともとリンクのポストを見つけました。適切なキーワードを知った後、私はもう一度検索し、この質問を見つけました。私は、少し精緻化し、未来の探検家の質問を架橋することが結果をより速く見つけることを望んでいる。私はこれが良い方法であるかどうかは分かりません。 –

+0

私の同等のケースでは、最初のエラーは: 'GoogleService、クラスファイルをロード中にエラーが発生しました '..../lib/gdata-core-1.0 .jar(com/google/gdata/client/GoogleService.class) 'が破損しています。その[javaパッケージ](https://code.google.com/p/gdata-java-client/source/checkout)はGuavaに依存します。どういうわけか 'classDispendencies + =" com.google.code.findbugs "%" jsr305 "%" 2.0.2 "'私のクラスパス( '/ lib')にすでにそのjarがあったとしても、sbtを使って解決策を再現できません。最初は何か案は? – matanster

関連する問題