4

我下载了最新的 google caliper 源代码并使用 maven 构建它。现在我正在尝试运行此处给出的 google 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)

我试图查看 caliper 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

但是错误是相同的,它看起来不像命令正在查看具有 Splitter 类的另一个 jar 文件。

4

2 回答 2

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

抱怨gson失踪com/google/gson/JsonParser。然后你可能需要谷歌仪器,就是这样。

这肯定不是要走的路。Maven应该照顾好一切,我非常希望它可以。我建议将标签添加maven到您的问题中。

于 2012-08-26T18:01:18.430 回答
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

于 2013-04-27T13:26:19.257 回答