java"ClassNotFoundException"错误

Ste*_*das 5 java classpath scribe classnotfoundexception

我是java编程的新手,我收到了很多错误的"ClassNotFoundException"错误.

奇怪的是它编译得很好:

java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg
Run Code Online (Sandbox Code Playgroud)

但是当我尝试运行它时,我收到以下错误:

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  
Run Code Online (Sandbox Code Playgroud)

我在网上查了一下,似乎java无法在运行时找到它能够在编译时找到的库.所以尝试了以下变化:

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  
Run Code Online (Sandbox Code Playgroud)

我检查了StackOverflow和google上的几个地方,仍然无法找出原因.我是java的新手,所以可能有一个简单的解决方案,但我找不到它.我在Ubuntu 11.04上使用Sun Java 1.6 64位.scribe-1.3.0.jar文件位于"/ usr/share/java"中,我相信它是放置java包的规范位置.

准系统代码在这里(如果它很重要):

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();
    }
}
Run Code Online (Sandbox Code Playgroud)

EnK*_*ypt 9

类路径必须指向您正在使用的外部库的目录以及您尝试自行运行的类.试试这个:

视窗:

java -cp .;/usr/share/java/scribe-1.3.0.jar FacebookProg
Run Code Online (Sandbox Code Playgroud)

Linux的:

java -cp .:/usr/share/java/scribe-1.3.0.jar FacebookProg
Run Code Online (Sandbox Code Playgroud)

顺便说一下,要编译它你应该运行这个:

javac -cp /usr/share/java/scribe-1.3.0.jar FacebookProg
Run Code Online (Sandbox Code Playgroud)