2012-08-26 24 views
3

我下載了最新的google caliper源代碼並使用maven構建它。現在我試圖運行谷歌卡尺範例測試給出here.。我正在使用下面的命令來執行測試。谷歌Caliper示例測試不起作用?

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類存在於應用服務引擎的工具-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 

但錯誤是一樣的,它看起來不像命令正在查看其他具有Splitter類的jar文件。

+2

不知道關於應用服務引擎,但'Splitter'是[Guava]的一部分(http://code.google.com/p/guava-libraries)。關於命令,你必須做錯了,因爲它別無選擇,只能使用提供的CLASSPATH。實際上,maven應該處理所有的事情...... – maaartinus

+0

如果我使用提供的命令,那麼它也不起作用。你可以給我命令的例子,並在哪個目錄我應該運行這個命令? – Rakesh

回答

1

我的回答沒有真正的答案,但評論太長。

不幸的是,我對maven幾乎一無所知。適合我的是下載git存儲庫並創建eclipse項目。這當然不是乾淨的解決方案,但它很容易讓我從圖書館學習。

什麼工作對我來說:

在我的工作我的樹位於pom.xml中,切換到該目錄並運行mvn install。它在~/.m2/repository深處創建了一些jar。由於我的耐心太長,我通過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 

抱怨從gson失蹤com/google/gson/JsonParser。那麼你可能需要谷歌instrumenter,就是這樣。

這肯定不是要走的路。 Maven應該關心所有事情,我非常希望它能。我建議添加標籤maven您的問題。

1

我面臨上述所有錯誤。下面是修復

$ 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

基準NS線性運行 TestContains1 6.42 ============================== TestContains2 5.46 =========================

VM:JAVA 試驗:0 長度:1