伏地魔运行时间错误

Posted

技术标签:

【中文标题】伏地魔运行时间错误【英文标题】:Voldemort run time error 【发布时间】:2013-10-11 12:00:41 【问题描述】:

我正在尝试运行可以通过 Voldemort 下载找到的客户端示例。

我的路径位置: /home/voldemort/voldemort-1.3.0/clientjava

我编译了代码

javac -classpath ../dist/voldemort-1.3.0.jar ClientVoldemort.java

没有出现错误。但是当我尝试按如下方式运行代码时:

java -classpath ../dist/voldemort-1.3.0.jar ClientVoldemort
Exception in thread "main" java.lang.NoClassDefFoundError: ClientVoldemort
Caused by: java.lang.ClassNotFoundException: ClientVoldemort
at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:276)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)

ClientExample code Given below.

package voldemort.examples;
import voldemort.client.ClientConfig;
import voldemort.client.SocketStoreClientFactory;
import voldemort.client.StoreClient;
import voldemort.client.StoreClientFactory;
import voldemort.versioning.Versioned;
public class ClientExample 
public static void main(String[] args) 
String bootstrapUrl = "tcp://localhost:6666";
StoreClientFactory factory = new SocketStoreClientFactory(new ClientConfig().setBootstrapUrls(bootstrapUrl));
StoreClient<String, String> client = factory.getStoreClient("my_store_name");
Versioned<String> version = client.get("some_key");
version.setObject("new_value");
client.put("some_key", version);


【问题讨论】:

【参考方案1】:

NoClassDefFoundError 表示该文件在编译时存在,但在运行时找不到,因为类路径设置不正确。检查这一点的一种方法是在 winzip 中打开您的 .jar 文件,它将显示 jar 中存在的所有文件。当您收到此异常时,您通常会看到 jar 中缺少您的类

【讨论】:

【参考方案2】:

似乎 JVM 没有在预期位置找到类,即 voldemort/examples 相对于当前目录

需要进行一些调整

将当前目录添加到类路径中, 将类限定为voldemort.examples.ClientVoldemort

将课程移至voldemort/examples 并使用

编译并运行命令:

javac -cp ../dist/voldemort-1.3.0.jar voldemort/examples/*.java
java -cp ../dist/voldemort-1.3.0.jar:. voldemort.examples.ClientVoldemort

注意:当使用-classpath-cp 标志时,当前目录不会自动包含在类路径中(与不使用这两个标志相反)

【讨论】:

以上是关于伏地魔运行时间错误的主要内容,如果未能解决你的问题,请参考以下文章

伏地魔 HTTP 服务

正确使用伏地魔作为键值对?

带有伏地魔罐子的 Maven 存储库

伏地魔计划的不一致解决器何时启动?

如果哈利一开始就被小天狼星抚养,剧情会怎么发展?

WAMP一键安装包安装魔众题库系统