8

我目前在使用从这里下载的番石榴库时遇到 java.lang.NoClassDefFoundError: com.google.common.collect.HashBiMap 的问题: http ://code.google.com/p/guava-libraries/

我已经将 guava-12.0.jar 作为参考库添加到我的项目中,但仍然出现错误。您能否就问题所在提供一些建议?感谢您的帮助

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


    }


}

我得到的错误信息

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

5 回答 5

12

此错误意味着该类在编译时可用,但在运行时找不到。当您的编译时类路径与运行时类路径不同时,通常会发生这种情况。

您的运行时类路径很可能不包含 guava jar。要验证这一点,请尝试在代码中打印您的类路径

在命令行上,你可以使用: java -cp "path/to/guava.jar" MyMainClass

或者,设置 CLASSPATH 环境变量以包含 jar。

于 2012-05-29T18:49:39.493 回答
5

我试图使用sourceCompatibility JavaVersion.VERSION_1_8启用的上游 Guave 21 和 22。这会在低于 SDK 版本 24 的设备上导致此错误。解决方案是使用仍支持 Java 7 的 guave 版本,该版本已向后移植到 Android。

dependencies {
  compile 'com.google.guava:guava:23.3-android'
}
于 2018-04-02T21:35:51.673 回答
2

就我而言,我的图书馆中有番石榴和谷歌收藏。google-collection 库与 guava 库发生冲突。如果您同时拥有 guava 和 google-collection,请尝试删除 google-collection 以进行重建。

于 2014-04-25T16:13:55.867 回答
1

只需从这里下载 Guava 库Guava

清洁和建造。为我工作。希望能帮助到你。干杯

于 2015-11-19T07:01:06.120 回答
0

就我而言,我尝试添加guava-17.0.jar选项Add External JARs...,这就是问题所在。当guava-17.0.jar在我的项目文件夹中移动(在 Libs 文件下)时,我没有问题。

当然,我删除了 External JAR 并使用Add JARs...选项再次添加它

于 2014-07-17T14:15:18.603 回答