2012-05-29 23 views
7

actualmente se enfrentan al problema de java.lang.NoClassDefFoundError: com.google.common.collect.HashBiMap al utilizar las bibliotecas de guayaba descargado desde aquí: http://code.google.com/p/guava-libraries/Guayaba: java.lang.NoClassDefFoundError - com.google.common.collect.HashBiMap

Ya agrego guava-12.0.jar en mi proyecto como biblioteca de referencia, pero sigo recibiendo el error. ¿Puede darnos algún consejo sobre cuál sería el problema? Gracias por su ayuda

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"); 


    } 


} 

mensaje de error me sale

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) 

Respuesta

13

Este error significa que la clase estaba disponible en tiempo de compilación, pero no se puede encontrar durante el tiempo de ejecución. Ocurre con mayor frecuencia cuando su classpath de tiempo de compilación es diferente de su classpath de tiempo de ejecución.

Es muy probable que su classpath en tiempo de ejecución no contenga el guava jar. Para verificar esto, intente printing your classpath en su código.

en la línea de comandos, puede utilizar: java -cp "ruta/a/guava.jar" MyMainClass

o, alternativamente, establecer la variable de entorno CLASSPATH para incluir el frasco.

+0

Gracias por su rápida respuesta. Entonces, ¿cómo puedo poner el jar de guayaba en mi classpath de tiempo de ejecución? – Eric

+0

¿cómo está ejecutando su código? en eclipse? de otra manera? –

+0

Un proyecto de Android, en Eclipse – Eric

2

En mi caso, tenía tanto guava como google-collection en mi biblioteca. La biblioteca google-collection estaba en conflicto con la biblioteca guava. Si tienes guava y google-collection, intenta eliminar google-collection para reconstruir.

0

En mi caso, he tratado de añadir el guava-17.0.jar con la opción Add External JARs... y esto era el problema. Cuando moví el guava-17.0.jar en la carpeta de proyectos (en el archivo Libs) no tuve ningún problema.

Por supuesto que, eliminado el archivo JAR externo y agregarlo de nuevo utilizando la opción Add JARs...

1

Sólo tienes que descargar la biblioteca de guayaba de aquí Guava

limpieza y construcción. Funciona para mi. Espero que ayude. Cheers

Cuestiones relacionadas