2013-10-11 5 views
0

Я пытаюсь запустить пример клиента, который можно найти с помощью загрузки Voldemort.Ошибка во время выполнения Voldemort

Мой путь Местоположение: /home/voldemart/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); 
} 
} 

ответ

0

Похоже, JVM не находит класс в ожидаемом месте, т.е. voldemort/examples относительно текущего каталога

Есть несколько корректировок требуется

  • Добавить текущий каталог в путь к классам,
  • Квалифицируйтесь класс как voldemort.examples.ClientVoldemort

Переместить класс voldemort/examples и использовать

Compile & выполнять команды:

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

Примечание: Когда используются -classpath или -cp флаги, текущий каталог не включаются автоматически в пути к классам (в отличие от не использовать ни один из этих флагов)

0

NoClassDefFoundError означает, что файл существовал во время компиляции, но не был найден во время выполнения, поскольку путь к классам не был t правильно. Один из способов проверить это - открыть ваш .jar-файл в winzip, он покажет вам все файлы, которые существуют в банке. В основном вы увидите, что ваш класс отсутствует в банке, когда вы получаете это исключение