java "ClassNotFoundException" Fehler
Ich bin neu in der java-Programmierung und ich bin immer die viel gescholtene Fehlermeldung "ClassNotFoundException" Fehler.
Die seltsame Sache ist, dass es kompiliert fein:
java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg
Aber wenn ich versuche es zu starten, bekomme ich die folgende Fehlermeldung:
steve@steve-ThinkPad-T61:~/facebook$ java FacebookProg
Exception in thread "main" java.lang.NoClassDefFoundError:
org/scribe/builder/ServiceBuilder
at FacebookProg.main(FacebookProg.java:8)
Caused by: java.lang.ClassNotFoundException: org.scribe.builder.ServiceBuilder
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)
... 1 more
Ich online überprüft und es scheint, dass java nicht finden können, die Bibliothek zur Laufzeit, dass es in der Lage war zu finden, die zur compile-Zeit. So versucht die folgenden Varianten:
java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg
java -cp /usr/share/java/ FacebookProg
export CLASSPATH="/usr/share/java"; java FacebookProf
export CLASSPATH="/usr/share/java/usr/share/java/scribe-1.3.0.jar"; java FacebookProg
Ich überprüfte mehreren stellen auf StackOverflow und google und kann immer noch nicht herausfinden, warum. Ich bin neu in java, so gibt es wahrscheinlich eine einfache Lösung, aber ich kann es nicht finden. Ich bin mit Sun Java 1.6 64-bit auf Ubuntu 11.04. Die scribe-1.3.0.jar die Datei liegt in "/usr/share/java", die, glaube ich, ist der kanonische Ort, um java-Pakete.
Den Barebone-code ist hier (im Fall es wichtig ist):
import org.scribe.builder.*;
import org.scribe.builder.api.*;
import org.scribe.oauth.*;
public class FacebookProg {
public static void main (String args[]) {
OAuthService service = new ServiceBuilder()
.provider(FacebookApi.class)
.apiKey("blah_blah")
.apiSecret("blah_blah")
.build();
}
}
InformationsquelleAutor Steve Quezadas | 2012-05-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den classpath hat, weisen auf das Verzeichnis der externen Bibliothek, die Sie verwenden, UND die Klasse, die Sie versuchen, auszuführen, selbst. Versuchen Sie dies:
Windows:
Linux:
Durch die Art und Weise , um es zu kompilieren sollten Sie dies ausführen:
Du bist herzlich willkommen. Ich kann Ihnen sagen, aus einem Programmierer s Auge, dass lernen durch Erfahrung ist weit mehr Wert als wissen aus Büchern und tutorials. Ich bin froh, dass es kam heute. Für den Schrägstrich vor der usr , naja ich bin nicht so vertraut mit der linux-Verzeichnisstruktur , so bin ich Leid.
InformationsquelleAutor EnKrypt
nehme an, dass das Verzeichnis des Programms
$HOME
$HOME/lib/*.jar
können Sie ein Skript schreiben wie:
InformationsquelleAutor Yanjiong Wang
Diese sollten funktionieren, wenn Sie zusammengestellt FacebookProg.class im gleichen Verzeichnis. Sie können versuchen
java -cp /usr/share/java/scribe-1.3.0.jar:/locationOfFacebookProg.class directory/FacebookProg
InformationsquelleAutor Ashwinee K Jha
Diese
bedeutet, dass Sie die
FacebookProg
Klasse nicht kompilieren.Wenn Sie verlassen die
-cp ...
aus, verlassen Sie das vital-classpath, so dass die JVM nicht finden können, die KlassenFacebookProg
erfordert.Kompilieren, müssen Sie
(Hinweis: die
javac
stattjava
zum aufrufen des Compilers)Laufen, Sie bereits wissen, wie.
Außerdem müssen Sie Fehler in den folgenden Zeilen:
Den ersten misspells
FacebookProg
und nicht die erforderliche jar im classpath, die zweite hat den falschen Pfad zu der jar. VersuchenStellen Sie außerdem sicher, dass die jar ist in der Tat befindet sich an
/usr/share/java/scribe-1.3.0.jar
InformationsquelleAutor Attila