jack編譯報錯的問題

最近公司開發人員頻繁jack的問題,我這邊總結一下:linux


 

1、 第一種狀況是服務器多人編譯而產生的jack端口衝突的緣由!報錯提示以下:vim

No Jack server running. Try ‘jack-admin start-server’ 
No Jack server running. Try ‘jack-admin start-serverbash

解決方法,首先第一步:服務器

執行命令:cat ~/.jack-server/config.properties|grep -i port && cat ~/.jack|grep -i port|grep -v LOG &&cat ~/.jack-settings|grep -i port  檢查你我的的端口是否一致!ui

以上保持server.port和port.admin是同一個端口!只有保持3個9033和9044,才能正常啓動jackspa

若是不是怎麼辦呢?unix

第二步、執行如下的腳本 bash  -x jack.sh   (注意,此腳本必須放在要編譯的工程根目錄內,運行時間有一點長哈)server

jack.sh內容以下:blog

#!/bin/bash
#cd root 
p_service=12$(echo $RANDOM|cut -c  1-3)
p_admin=`echo $[p_service-1]`
pwd=${PWD}
#clean
rm -rf $HOME/.jack-server/config.properties
if [ -f $HOME/.jack ];then
        sed -i "s/SERVER_PORT_SERVICE=.*/SERVER_PORT_SERVICE=${p_service}/g"  $HOME/.jack
        sed -i "s/SERVER_PORT_ADMIN=.*/SERVER_PORT_ADMIN=${p_admin}/g"  $HOME/.jack
else
        continue
fi
#
sed -i "s/SERVER_PORT_SERVICE=.*/SERVER_PORT_SERVICE=${p_service}/g"  $HOME/.jack-settings
sed -i "s/SERVER_PORT_ADMIN=.*/SERVER_PORT_ADMIN=${p_admin}/g"  $HOME/.jack-settings

if [ -f $pwd/prebuilts/sdk/tools/jack-admin ];then
        $pwd/prebuilts/sdk/tools/jack-admin kill-server
        $pwd/prebuilts/sdk/tools/jack-admin start-server
        sleep 5
        if [ -f $HOME/.jack-server/config.properties ];then
                $pwd/prebuilts/sdk/tools/jack-admin kill-server
                sed -i "s/jack.server.service.port.*/jack.server.service.port=$p_service/g"   $HOME/.jack-server/config.properties
                sed -i "s/jack.server.admin.port.*/jack.server.admin.port=${p_admin}/g"  $HOME/.jack-server/config.properties
                echo "jack-server reset peer!!!"
        else
                echo "建立不成功!"
        fi
else
        echo "wrong path,please check!"
fi
exit

執行完了以後,再執行第一步,查看端口是否是同樣的!進程

ps:複製腳本內容後,最好在vim裏面設置一下格式, 命令 :set ff=unix


 

第二種狀況是:你會發現端口是同樣的,可是工程編譯的時候,仍是會報jack的問題,報錯緣由以下:

ERROR: Communication error with Jack server (52) make: *** [out/target/common/obj/JAVA_LIBRARIES/libutil_intermediates/classes.jack] Error

其實這種狀況多半屬於jack-admin缺乏變量JACK_JAR而致使的。

 

 

解決方法:第一步: lsof  -i: 9033    (以前的端口),看是否仍然被佔用。若是佔用的話,通知管理員把這個端口進程殺掉。

第二步:

工程根目錄內執行如下三句

export JACK_JAR=./out/host/linux-x86/framework/jack.jar

./out/host/linux-x86/bin/jack-admin stop-server

./out/host/linux-x86/bin/jack-admin start-server

而後再進行編譯,就能夠解決jack編譯報錯的問題了

第三步:記得在同一個窗口中,進行編譯,緣由是由於,第二步執行的語句是臨時生成一個能夠編譯的環境,換到另外窗口的話,就生效了!


 哈,但願能幫到你們!

相關文章
相關標籤/搜索