سؤال

أنا جديد على برمجة جافا وأنا الحصول على خطأ "كلاسنوتفوندكسيبتيون" خطأ كثيرا.

الشيء الغريب هو أنه يجمع بشكل جيد:

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 -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  

راجعت عدة أماكن على ستاكوفيرفلو وجوجل وما زلت لا أستطيع معرفة السبب.أنا جديد على جافا ، لذلك ربما يكون هناك حل بسيط ، ولكن لا أستطيع العثور عليه.أنا باستخدام الشمس جافا 1.6 64 بت على أوبونتو 11.04.الكاتب-1.3.0.ملف جرة في"/البيرة/حصة / جافا " التي ، على ما أعتقد ، هو المكان الكنسي لوضع حزم جافا.

رمز المجردة هنا (في حال كان يهم):

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();
    }
}
هل كانت مفيدة؟

المحلول

يجب أن يشير ClassPath إلى كلا من دليل المكتبة الخارجية التي تستخدمها والفصل الذي تحاول تشغيله.جرب هذا:

Windows: giveacodicetagpre.

Linux: giveacodicetagpre.

بالمناسبة، لتجميعها يجب أن تكون قد قمت بتشغيل هذا: giveacodicetagpre.

نصائح أخرى

لنفترض أنه، دليل البرنامج الخاص بك هو

$ home

$ home / lib / *. جرة

يمكنك كتابة نص مثل: giveacodicetagpre.

java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg

هذا يجب أن تعمل بشكل جيد إذا قمت بتجميع فيسبوكبروغ.فئة في نفس الدليل.يمكنك أن تجرب java -cp /usr/share/java/scribe-1.3.0.jar:/locationOfFacebookProg.class directory/ FacebookProg

هذا

java -cp /usr/share/java/scribe-1.3.0.jar FacebookProg 

يعني أنك تقوم بتشغيل FacebookProg الطبقة ، وليس تجميعها.

إذا تركت -cp ... خارج ، كنت ترك كلاسباث الحيوية بها ، وبالتالي فإن جفم لا يمكن العثور على الطبقات FacebookProg يتطلب.

لتجميع ، تحتاج إلى

javac -cp /usr/share/java/scribe-1.3.0.jar FacebookProg.java 

(لاحظ javac, ، بدلا من java لاستدعاء المترجم)

لتشغيل ، أنت تعرف بالفعل كيفية.

أيضا ، لديك أخطاء في خطوط فولوينغ:

export CLASSPATH="/usr/share/java"; java FacebookProf     
export CLASSPATH="/usr/share/java/usr/share/java/scribe-1.3.0.jar"; java FacebookProg

الأخطاء الإملائية الأولى FacebookProg وليس لديها جرة المطلوبة على كلاسباث ، والثاني لديه مسار خاطئ إلى جرة.حاول

export CLASSPATH="/usr/share/java/scribe-1.3.0.jar"; java FacebookProg     

تأكد أيضا من أن البرطمان موجود بالفعل في /usr/share/java/scribe-1.3.0.jar

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top