Java runtime ClassNotFoundException

Hatte gerade eine Frage über eine seltsame runtime Fehler, den ich habe. Ich arbeite mit einem JSON-server, der antwortet mit einem JSON-Objekt aus, wenn Sie dazu aufgefordert werden, die von einer externen Quelle. Wie jetzt, jedoch, ich bin einfach nur versuchen, um das JSON-Objekt laufen, bevor man Sie versendet. Mein code kompiliert ohne Angabe classpath, aber wenn es um die Laufzeit, es wirft ein NoClassDefFoundError wie hier zu sehen:

Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/commons/lang/exception/NestableRuntimeException
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at ExampleServer.sendData(ExampleServer.java:76)
at ExampleServer.runServer(ExampleServer.java:30)
at ExampleServer.main(ExampleServer.java:15)
   Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.exception.NestableRuntimeException
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:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
... 15 more

Mein code folgt hier:

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.lang.*;
import net.sf.json.*;

public class ExampleServer{

private DataOutputStream output;
private DataInputStream input;
private ServerSocket server;
private Socket connection;

public static void main(String[] args){
    new ExampleServer().runServer();
}

public void ExampleServer(){
    System.out.println("Server object created");
}

public void runServer(){
    try{
        server = new ServerSocket(12345,100);
        while(true){
            try{
                waitForConnection();
                getStreams();
                processConnection();
                sendData("Text");
            } catch(Exception e){
                System.out.println("Server Terminated Exception.");
            } finally {
                closeConnection();
            }
        }
    } catch(Exception e){
        e.printStackTrace();
    }
}

private void waitForConnection(){
    try{
        System.out.println("Waiting for connection.");
        connection = server.accept();
        System.out.println("Connection received from " + connection.getInetAddress().getHostName());
    } catch (IOException e){
        System.out.println(e);
    }
}

private void getStreams() throws IOException{
    output = new DataOutputStream(connection.getOutputStream());
    input = new DataInputStream(connection.getInputStream());
    System.out.println("Got streams");
}

private void processConnection() throws IOException{
    sendData("This is a test message");
}

private void closeConnection(){
    try{
        if(output != null && connection != null){
            sendData("SEVER>>> TERMINATE");
            output.close();
            connection.close();
        }
    } catch (IOException e){
        e.printStackTrace();
    }
}

private void sendData(String message){
    try{
        JSONObject g = new JSONObject();
        g.put("message", message);
        System.out.println(g.toString());
    } catch (Exception e){
        System.out.println("Error writing object");
    }
}

}

und der JSON-Ordner ist im gleichen Verzeichnis wie ExampleServer.java, mit der JSON-Klassen, die Ihren Wohnsitz in net/sf/json wie angegeben in meine importiert. Warum ist es nicht zu arbeiten, bis die Laufzeit? Ist mein classpath aus irgendeinem Grund nicht richtig? Was wäre die richtige syntax für die Aufnahme einer notwendigen classpath?

Vielen Dank im Voraus

InformationsquelleAutor Shelby Vanhooser | 2012-07-19

Schreibe einen Kommentar