私はJavaプログラミングに不慣れで、非常に悪意のあるエラー「ClassNotFoundException」エラーが発生します。
奇妙なことは、それがうまくコンパイルされるということです:
java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg
しかし、実行しようとすると、次のエラーが発生します。
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
オンラインで確認したところ、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
StackOverflowとgoogleでいくつかの場所を確認しましたが、それでも理由がわかりません。私はJavaを初めて使用するので、おそらく簡単な解決策がありますが、それを見つけることができません。Ubuntu11.04でSunJava1.664ビットを使用しています。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();
}
}