在64位ubuntu上编译katkit4.4时经常遇到以下错误导致编译中止,困扰了很长时间才解决此问题,尝试过几种不同的方法,最后总算找到了根本原因。

先看下错误现象,提示HashSet_jni.h error。

错误现象:

In file included from externalromium_org/content/common/android/hash_set.cc:5:0:
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:10:26: error: extra tokens at end of #ifndef directive [-Werror]
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:11:26: error: missing whitespace after the macro name [-Werror]
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:24:20: error: expected initializer before '<' token
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:26:17: error: expected initializer before '<' token
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:29:22: error: expected '{' before '<' token
out/target/product/xxx/obj/GYPd_intermediates/content/jni/HashSet_jni.h:29:22: error: expected unqualified-id before '<' token
externalromium_org/content/common/android/hash_set.cc:30:1: error: expected '}' at end of input
cc1plus: all warnings being treated as errors
make: *** [out/target/product/xxx/obj/STATIC_LIBRARIES/content_content_common_gyp_intermediates/content/common/android/hash_set.o] 错误 1

错误原因:
导致此问题的原因就是在ubuntu每天弹出的更新时选择了默认全部更新,导致原先系统自带的openjdk又安装上了,并且变成了默认的javap。
虽然每次检查java -version都显示是自己配置的java jdk1.6,但没有注意到javap已经改变。后来无意中在网上看到javap,才想起检查自己的默认javap是否正确。

先介绍下javap是什么呢?
javap是JDK自带的反汇编器,可以查看java编译器为我们生成的字节码。通过它,我们可以对照源代码和字节码,从而了解很多编译器内部的工作。
详细介绍请参考:javap(反汇编命令)详解

那么如何修改javap呢?
使用 sudo update-alternatives --config javap 命令即可以查看修改javap使用的默认版本,可以根据提示选择默认的版本。
如果自己安装的jdk的javap不存在,则可以通过以下方法添加javap
sudo update-alternatives --install /usr/bin/javap javap /home/ameyume/jdk1.6.0_45/bin/javap 300
再次执行 sudo update-alternatives --config javap 设置默认的javap即可。注:如果只有一个可选的话,则不会显示列表,即无需处理。


更多相关文章

  1. Android(安卓)Multiple dex files define
  2. Android(安卓)错误 The method onClick(View) of type new View.
  3. Android开发,在Activity启动时,默认隐藏软键盘。和遮挡Edittext时
  4. 错误记录seterror的文字不显示
  5. 将Android(安卓)Studio默认布局ConstraintLayout切换成LinearLay
  6. 怎么让我们自己开发的Android程序设为默认启动
  7. 解决MainActivity.onCreate(Unknown Source)的混淆错误
  8. Android(安卓)系统app集成Bugly收集错误
  9. Android(安卓)studio导入新项目关于Gradle版本的问题

随机推荐

  1. Android 中的 BACK 和 HOME 按钮的区别
  2. Android开机广播和关机广播
  3. Android 调用手机震动
  4. Android RSA 加密(分段加密)
  5. 简单说说android的线程封装
  6. ViewPager使用样例
  7. Android基础知识学习——界面转换
  8. android studio设置自动导入
  9. 【android】Sax解析半个例子 :startElemen
  10. Android IntentService 深入分析