Chinaunix首页 | 论坛 | 博客
  • 博客访问: 711129
  • 博文数量: 260
  • 博客积分: 7033
  • 博客等级: 少将
  • 技术积分: 2633
  • 用 户 组: 普通用户
  • 注册时间: 2008-04-13 23:15
文章分类

全部博文(260)

文章存档

2012年(2)

2011年(41)

2010年(78)

2009年(139)

我的朋友

分类: LINUX

2009-08-20 20:19:52

今天编译freescale BB 2.5的Android,一开始的时候,由于没有设置ANDROID的Java Home变量,导致在编译Java文件的时候,总是会报错:
com.sun.javadoc找不到等错误。

在 build-android.sh 中的设置JDK的PATH后面,添加ANDROID_JAVA_HOME变量就可以了。
export PATH=$PWD/jdk1.6.0_13/bin/:$PATH
export JAVA_HOME=$PWD/jdk1.6.0_13
export ANDROID_JAVA_HOME=$JAVA_HOME

解决思路:
由于找不到tools.jar/dt.jar等,才导致在编译java文件时给出那些错误提示。
在java/bin下面,grep com.sun.javadoc,找到这个类是在tools.jar中定义的。
据此,在整个android目录中搜索tools.jar,在下面的这个文件中找到相关定义:
android/build/core/find-jdk-tools-jar.sh

if [[ "x$ANDROID_JAVA_HOME" != x && -e $ANDROID_JAVA_HOME/lib/tools.jar ]] ; then
    echo $ANDROID_JAVA_HOME/lib/tools.jar
else
    JAVAC=$(which javac)
    while [ -L $JAVAC ] ; do
        LSLINE=$(ls -l $JAVAC)
        JAVAC=$(echo -n $LSLINE | sed -e "s/.* -> //")
    done
    echo $JAVAC | sed -e "s:\(.*\)/bin/javac.*:\\1/lib/tools.jar:"
fi

看来,如果定义了ANDROID_JAVA_HOME这个变量,这个脚本会返回这变量下面的tools.jar

如果没有定义,则程序会自动根据javac的路径适配。


既然在其他同事那里可以编译通过,为什么我这里编译不通过呢?

引入build-android.sh里面相关的变量后,which javac,竟然返回这种值:

/home/xiewei/BB2.5/jdk1.6.0_13/bin//javac,javac前面竟然有两个斜杠,最终找到原因:在设置PATH变量的时候,多加了一个"/":

export PATH=$PWD/jdk1.6.0_13/bin/:$PATH

将bin/后面的那个/去掉,再次重新编译,一切OK。





阅读(945) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~