番石榴:java.lang.NoClassDefFoundError - com.google.

2019-06-24 23:24发布

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

我已经添加番石榴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)

Answer 1:

这个错误意味着类是在编译时间,但在运行时无法找到。 当你的编译时类路径是从运行时类路径不同的最常见的情况。

这很可能是运行时类路径中不包含番石榴罐子。 为了验证这一点,尝试打印您的classpath在你的代码。

在命令行中,你可以使用:java命令“路径/到/ guava.jar” MyMainClass

或者可选地,设置CLASSPATH环境变量以包括罐。



Answer 2:

就我而言,我在我的图书馆都番石榴和谷歌收集。 谷歌收集库与库番石榴发生冲突。 如果你有两个番石榴和谷歌收集,尽量去除谷歌收集重建。



Answer 3:

我试图上游番石榴21和22使用,具有sourceCompatibility JavaVersion.VERSION_1_8启用。 这下面SDK版本24.解决方案是使用仍支持Java 7番石榴版本,这是向后移植为Android设备造成此错误。

dependencies {
  compile 'com.google.guava:guava:23.3-android'
}


Answer 4:

从这里下载番石榴库番石榴

清理并生成。 我的作品。 希望能帮助到你。 干杯



Answer 5:

就我而言,我试图添加guava-17.0.jar与选项Add External JARs...是问题 。 当我移动的guava-17.0.jar在我的项目文件夹 (文件利布斯下),我没有问题。

当然我,去掉了外部JAR,并将其添加再次使用Add JARs...选项



文章来源: Guava: java.lang.NoClassDefFoundError - com.google.common.collect.HashBiMap