2012-05-29 11 views
7

Ich stehe zur Zeit das Problem der java.lang.NoClassDefFoundError: com.google.common.collect.HashBiMap wenn Guave Bibliotheken von hier heruntergeladen werden: Guava: java.lang.NoClassDefFoundError - com.google.common.collect.HashBiMap

Ich habe bereits guava-12.0.jar in mein Projekt als eine Referenzbibliothek hinzugefügt, aber ich bekomme immer noch den Fehler. Können Sie uns einen Rat geben, wie das Problem aussehen würde? Vielen Dank für Ihre Hilfe

package my.project; 

import android.app.Activity; 
import android.os.Bundle; 

import com.google.common.collect.BiMap; 
import com.google.common.collect.HashBiMap; 

public class MainActivity extends Activity{ 

    private BiMap<String,String> bidiMap; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState);  
      setContentView(R.layout.bible_help_cal); 

     bidiMap = HashBiMap.create();   
     bidiMap.put("a","100"); 
     bidiMap.put("b","200"); 


    } 


} 

Fehlermeldung erhalte ich

05-29 18:35:19.737: E/AndroidRuntime(376): FATAL EXCEPTION: main 
05-29 18:35:19.737: E/AndroidRuntime(376): java.lang.NoClassDefFoundError: com.google.common.collect.HashBiMap 
05-29 18:35:19.737: E/AndroidRuntime(376): at my.project.MainActivity.onCreate(MainActivity.java:18) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1712) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1764) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.app.ActivityThread.access$1500(ActivityThread.java:122) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1002) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.os.Handler.dispatchMessage(Handler.java:99) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.os.Looper.loop(Looper.java:132) 
05-29 18:35:19.737: E/AndroidRuntime(376): at android.app.ActivityThread.main(ActivityThread.java:4025) 
05-29 18:35:19.737: E/AndroidRuntime(376): at java.lang.reflect.Method.invokeNative(Native Method) 
05-29 18:35:19.737: E/AndroidRuntime(376): at java.lang.reflect.Method.invoke(Method.java:491) 
05-29 18:35:19.737: E/AndroidRuntime(376): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:841) 
05-29 18:35:19.737: E/AndroidRuntime(376): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:599) 
05-29 18:35:19.737: E/AndroidRuntime(376): at dalvik.system.NativeStart.main(Native Method) 

Antwort

13

Dieser Fehler bedeutet, dass die Klasse bei der Kompilierung zur Verfügung stand, kann aber nicht während der Laufzeit zu finden. Es passiert am häufigsten, wenn sich der Klassenpfad für die Kompilierung von dem Klassenpfad für die Laufzeit unterscheidet.

Es ist sehr wahrscheinlich, dass Ihr Klassenpfad zur Laufzeit den Guava-Jar nicht enthält. Um dies zu überprüfen, versuchen Sie printing your classpath in Ihrem Code.

auf der Kommandozeile können Sie verwenden: java -cp "path/to/guava.jar" MyMainClass

oder alternativ, stellen Sie die Umgebungsvariable CLASSPATH das Glas aufzunehmen.

+0

Danke für Ihre schnelle Antwort. Also, wie kann ich das Guavenglas in meinen Laufzeitklassenpfad setzen? – Eric

+0

Wie laufen Sie Ihren Code? in der Finsternis? ein anderer Weg? –

+0

Ein Adroid-Projekt, In Eclipse – Eric

2

In meinem Fall hatte ich beide Guava und Google-Sammlung in meiner Bibliothek. Google-Collection-Bibliothek stand im Konflikt mit der Guava-Bibliothek. Wenn du sowohl guava als auch google-collection hast, versuche google-collection zu entfernen, um es neu zu erstellen.

0

In meinem Fall habe ich versucht, die guava-17.0.jar mit der Option Add External JARs... und diese war das Problem hinzuzufügen. Als ich die guava-17.0.jar in meinem Projektordner (unter der Libs-Datei) verschoben hatte, hatte ich kein Problem.

Natürlich I, entfernt, um die externe JAR und fügen Sie es erneut die Add JARs... Option

1

Laden Sie einfach Guava Bibliothek von hier Guava

reinigen und zu bauen. Funktioniert bei mir. Hoffe es hilft. Prost

Verwandte Themen