4

最新の Google キャリパー ソース コードをダウンロードし、maven を使用してビルドしました。ここで、Google キャリパーのサンプル テストを実行しようとしています。. 以下のコマンドを使用してテストを実行しています。

java -cp /home/rakesh/programming/refcode/caliper/caliper/target/caliper-1.0-SNAPSHOT.jar  com.google.caliper.Runner examples.StringBuilderBenchmark

しかし、次のエラーが発生します。

Exception in thread "main" java.lang.NoClassDefFoundError: com/google/common/base/Splitter
    at com.google.caliper.Runner.<clinit>(Runner.java:67)
Caused by: java.lang.ClassNotFoundException: com.google.common.base.Splitter
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266)

キャリパー jar ファイルを調べてみましたが、com.google.common.base.Splitter クラス ファイルが見つかりませんでした。Splitter.java ファイルを取得できませんでした。ここで欠けているものを誰かが教えてくれますか?

EDIT1:
com.google.common.base.Splitter クラスが appengine-tools-sdk-1.2.1.jar jar ファイルに存在することがわかりました。以下に示すように、コマンドに jar ファイルを含めました。

java -cp /home/rakesh/programming/refcode/caliper/caliper/target/caliper-1.0-SNAPSHOT.jar:/home/rakesh/programming/refcode/caliper/examples/appengine-tools-sdk-1.2.1.jar  com.google.caliper.Runner examples.StringBuilderBenchmark

しかし、エラーは同じで、コマンドがスプリッタークラスを持つ他のjarファイルを調べているようには見えません。

4

2 に答える 2

1

I faced all the errors as above. Below is the fix

$ export CLASSPATH=/home/deepakkv/projects/poc/benchmarkparquet/target/classes:~/.m2/repository/com/google/caliper/caliper/0.5-rc1/caliper-0.5-rc1.jar:~/.m2/repository/com/google/guava/guava/14.0.1/guava-14.0.1.jar:/home/deepakkv/softwares/google-gson-2.2.3/gson-2.2.3.jar

$ java com.google.caliper.Runner com.parquet.benchmark.BenchmarkParquetDirectWrites 0% Scenario{vm=java, trial=0, benchmark=TestContains1, length=1} 6.42 ns; σ=0.46 ns @ 10 trials 50% Scenario{vm=java, trial=0, benchmark=TestContains2, length=1} 5.46 ns; σ=0.26 ns @ 10 trials

benchmark ns linear runtime TestContains1 6.42 ============================== TestContains2 5.46 =========================

vm: java trial: 0 length: 1

于 2013-04-27T13:26:19.257 に答える
1

私の答えは本当の答えではありませんが、コメントするには長すぎます。

残念ながら、私は maven についてほとんど何も知りません。私にとってうまくいくのは、gitリポジトリをダウンロードしてEclipseプロジェクトを作成することです。これは確かにクリーンな解決策ではありませんが、簡単で、ライブラリから学ぶことができます。

私のために働いたもの:

作業ツリーで pom.xml を見つけ、そのディレクトリに切り替えて実行しましmvn installた。奥のどこかに壷を作った~/.m2/repository。パスが長すぎて我慢できなかったので、 経由でシンボリックリンクを作成しましたln -s ~/.m2/repository/com/google/ .。を手動でコンパイルしたStringBuilderBenchmarkところ、正確にエラーが発生しました。

次にmvn install、グアバフォルダーで実行し、現在実行中です

java -cp .:\
./google/caliper/caliper/1.0-SNAPSHOT/caliper-1.0-SNAPSHOT.jar:\
./google/guava/guava/12.0/guava-12.0.jar \
examples/StringBuilderBenchmark

gsoncom/google/gson/JsonParserから欠落していると不平を言います。次に、Google Instrumenterが必要になる場合があります。それだけです。

これは確かに進むべき道ではありません。Maven はすべてを処理する必要があり、それができることを強く願っています。タグmavenを質問に追加することをお勧めします。

于 2012-08-26T18:01:18.430 に答える