>我目前在使用从这里下载的番石榴库时面临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)
意味着该类在编译时可用,但在运行时找不到。当编译时类路径与运行时类路径不同时,最常发生这种情况。
运行时类路径很可能不包含番石榴罐。若要验证这一点,请尝试在代码中打印类路径。
在命令行上,您可以使用: java -cp "path/to/guava.jar" MyMainClass
或者,将 CLASSPATH 环境变量设置为包含 jar。
我试图使用上游 Guave 21 和 22,并启用了 sourceCompatibility JavaVersion.VERSION_1_8
。这会导致 SDK 版本 24 以下的设备上出现此错误。解决方案是使用仍然支持Java 7的guave版本,该版本已向后移植到Android上。
dependencies {
compile 'com.google.guava:guava:23.3-android'
}
就我而言,我的图书馆里既有番石榴,也有谷歌收藏。 Google-Collection Library与Guava图书馆发生冲突。 如果您同时拥有番石榴和谷歌收藏,请尝试删除谷歌收藏以进行重建。
只需从这里下载番石榴库 番石榴
清洁和构建。为我工作。希望对您有所帮助。干杯
就我而言,我尝试使用选项添加guava-17.0.jar
Add External JARs...
,这就是问题所在。当我在我的项目文件夹(在 Libs 文件下)中移动guava-17.0.jar
时,我没有问题。
当然,我删除了外部 JAR,然后使用 Add JARs...
选项再次添加它