2010-11-04 4 views
0

Классическая проблема, NoClassDefFoundError, что мне нужно? создать новый класс?Классическая ошибка, NoClassDefFoundError

import java.net.*; 
import java.io.*; 
import org.xsocket.*; 
import org.xsocket.connection.*; 
import java.io.IOException; 

public class SocketClient { 
    public static void main(String[] args) { 
     try { 
      IBlockingConnection bc = new BlockingConnection("127.0.0.1", 8090); 
      String req = "Hello server"; 
      bc.write(req + "\r\n"); 
     } catch (IOException e){} 
      System.out.println("missing"); 
    } 
} 

я получаю следующее исключение:

 
C:\Users\Wildfire\Desktop>java -cp xSocket-2.8.14.jar SocketClient 
Exception in thread "main" java.lang.NoClassDefFoundError: SocketClient 
Caused by: java.lang.ClassNotFoundException: SocketClient 
     at java.net.URLClassLoader$1.run(URLClassLoader.java:202) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(URLClassLoader.java:190) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:307) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) 
     at java.lang.ClassLoader.loadClass(ClassLoader.java:248) 
Could not find the main class: SocketClient. Program will exit. 
+0

Какая полная ошибка? – TartanLlama

+0

Какой класс он не может найти? Отправлять след исключения. – AHungerArtist

+0

Вы используете блокнот/vi? Правильная среда IDE должна импортировать только соответствующие классы, а не '*'. Убедитесь, что ваш импорт охватывает все классы, которые вы пытаетесь использовать. (кроме стандартных, таких как String) – Jimmy

ответ

4
java -cp xSocket-2.8.14.jar;. SocketClient 

Вы пропускаете текущий каталог с пути класса.

Для полноты (спасибо Марку):

на Unix/Linux/и т.д. ...:

java -cp xSocket-2.8.14.jar:. SocketClient 
+4

Это. Если вы не укажете путь к классам, путь к классам будет текущим каталогом ("."). Когда вы укажете путь к классу, значение по умолчанию не используется, поэтому, если вы хотите, чтобы текущий каталог в пути к классам вам нужно было добавить его явно. –

+0

Готов поспорить, что почти все мы это сделали :) –

+3

@ user217582: см. Мой комментарий. ';' Является разделителем путей (разделяет два разных пути, а на платформах * nix - ':'), а '.' обозначает текущий каталог. –

6

Это должно работать:

java -cp xSocket-2.8.14.jar SocketClient 

("ф" является аббревиатурой "классам")

+0

Нет, он все еще показывает NoClassDefFoundError – Proyb2

+0

@ user217582: для какого класса? SocketClient? Если да, то вы его скомпилировали? –

+0

Это проблема класса, а не jar на самом деле – Proyb2

1

Ваш путь к классам, вероятно, неправильно. Попробуйте:

java -classpath dir_missing_from_class_path your_java_file 
+0

Я не понимаю, ваш вопрос явно указывает, что вы испытываете ошибку NoClassDefFoundError, которую мой anser специально предназначен для вас. –

+0

http://jroller.com/sjivan/entry/difference_between_classnotfoundexception_and_noclassdeffounderror – Proyb2

+0

Я думаю, что @ Майкл прав. Вы пробовали его решение? –

Смежные вопросы