2012-03-30 14 views
0

Ich habe Simple Java-Programm namens MainController.java. Ich versuche, es aus dem Verzeichnis zu kompilieren, in dem ich meine MainController.java-Datei gespeichert habe, indem ich javac MAinController.java schreibe, es kompiliert ordnungsgemäß und erzeugt MainController.class-Datei in demselben Verzeichnis. Jetzt 1), wenn ich versuche, die Datei durch Schreiben „java MainController“ zu laufen, es gibt mirEinstellung classpth in Ubuntu

Exception in thread "main" java.lang.NoClassDefFoundError: MainController (wrong name: cased/test/MainController) 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:634) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:277) 
at java.net.URLClassLoader.access$000(URLClassLoader.java:73) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:212) 
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) 
    Could not find the main class: MainController. Program will exit. 
    [email protected]:~/workspace/Test/src/cased/test$ 

Ich weiß, es gibt ein Problem mit meinem Classpath. Wie stelle ich ein? Ich will das, wenn ich den Befehl "java MainController" aus dem Verzeichnis ausführen, in dem es Maincontroller.class-Datei gibt, sollte es es ausführen. Ich möchte den Parameter -cp nicht jedes Mal an den java-Befehl übergeben, wenn ich ihn ausführen möchte.

Für Jvm Info lief ich "java -version" und es zeigt folgende:

java version "1.6.0_22" OpenJDK Runtime Environment (IcedTea6 1.10.6) (6b22-1.10.6-0ubuntu1) OpenJDK Server VM (build 20.0-b11, gemischter Modus)

Bitte sagen Sie mir, wie Sie die Klassenpfadvariable setzen und was sie für jvm festlegen soll.

Vielen Dank im Voraus.

Antwort

0

Sie müssen den Paketnamen hinzufügen, wenn Sie MainController ausführen. Von Ihrem ~workspace/Test/src Verzeichnis, führen Sie die folgenden Schritte aus:

javac cased/test/MainController.java 
java cased.test.MainController 
0

Wenn Sie nicht die -cp Flagge jedes Mal festlegen möchten, können Sie die Umgebungsvariable CLASSPATH verwenden können. aber wahrscheinlich möchten Sie diese Variable auf Ihre gemeinsame jars-Verzeichnis (wie Sie Lib-Verzeichnis und src in Ihrem Projekt).

Wie auch immer, es ist scheint, wie das Problem ist, dass Sie die volle Klasse Namen- Paket + Klasse, zum Beispiel für die Klasse MAinController festlegen müssen, die in org.examples Paket ist, sollten Sie verwenden: Javac org.examples. MAinController aus dem Hauptverzeichnis Ihres Projekts

+0

und wenn ich Classpath-Umgebungsvariablen angeben möchte, wie mache ich das? Ich meine, könnte ich mir die Syntax erklären? und wo soll ich es schreiben? – Ragini

+0

export CLASSPATH = "/ home/benutzer/projekt/lib:/home/usr/project/src" – shem