好湿?好紧?好多水好爽自慰,久久久噜久噜久久综合,成人做爰A片免费看黄冈,机机对机机30分钟无遮挡

主頁 > 知識庫 > linux jdk版本隨時切換版本隨時切換實現方法

linux jdk版本隨時切換版本隨時切換實現方法

熱門標簽:山東企業電銷機器人價格 百度中國地圖標注中心 百度地圖標注開鎖電話 潮州地圖標注 依蘭縣地圖標注app pageadm實現地圖標注 安陽百應電銷機器人加盟 琿春市地圖標注app 公司400電話辦理價格

項目處理問題遇到如下情況,引用第三方的jar包報出ClassDefNotFoundException錯誤導致app崩潰,雙方溝通確認該類存在且排除工程未clean,代碼混淆導致等原因。

注意到編譯app的時候提示了很多如下與正常情況下不一樣的信息:

trouble processing:
bad class file magic (cafebabe) or version (0033.0000)
...while parsing com/baidu/mapapi/SDKInitializer.class
...while processing com/baidu/mapapi/SDKInitializer.class
279 warnings
SDKInitializer正是ClassDefNotFoundException報錯的類。
 
百度搜索出現這個編譯提示找到了問題出現的原因:第三方公司打包這個jar包使用的jdk1.7版本(大于1.6),而我們編譯app使用的是1.6版本,由于編譯出的字節碼版本不一致,導致無法轉換成android虛擬機刻度的字節碼,因此引用的jar包實際并未編譯到當前apk中,程序運行的時候當然就找不到相應的類了。
 
公司編譯服務器實際上配置了多個jdk版本,而且android編譯是在設置環境變量的時候設置的jdk版本。編譯android4.4使用的是jdk1.6,而編譯android5.0則使用的是jdk1.7,這就涉及到了如何隨時切換jdk版本。
 
先來看看如何設置jdk環境變量,百度搜索得到的答案多是修改~/.bashrc或修改/etc/profile文件一次性完成配置。我用vi打開這兩個文件并未找到相應的jdk環境變量,但是使用java -version確實能看到默認的jdk版本。這就有了疑問,當前默認jdk軟件的環境變量是在哪里配置的?
 
使用 which java 命令找到當前java可執行程序的位置
fordreamxin@compiler207:~$ which java
/usr/bin/java
 /usr/bin/目錄下存放的多是用戶安裝的軟件

fordreamxin@compiler207:~$ ll /usr/bin/java
lrwxrwxrwx 1 root root 22 Nov 13 06:18 /usr/bin/java -> /etc/alternatives/java*

alternatives是一個linux下的多版本管理軟件,利用它就可以實現jdk的版本切換,這點稍后再描述。先來alternatives目錄地下看看有些什么東西。

fordreamxin@compiler207:/etc/alternatives$ ls java*
java  java.1.gz  javac  javac.1.gz  javadoc  javadoc.1.gz  javah  javah.1.gz  javap  javap.1.gz  java_vm  javaws  javaws.1.gz
fordreamxin@compiler207:/etc/alternatives$ ll java
lrwxrwxrwx 1 root root 36 Nov 13 06:17 java -> /usr/lib/jvm/java-6-sun/jre/bin/java*

原來該目錄下放置了很多軟件的版本引用,從這里可以找到當前軟件版本(jdk)的實際位置

fordreamxin@compiler207:/etc/alternatives$ ls /usr/lib/jvm/
java-1.7.0-openjdk-amd64  java-6-sun  java-6-sun-1.6.0.26  java-7-openjdk-amd64
在/usr/lib/jvm文件夾下時間存儲了各個jdk版本的軟件,而alternatives正是通過修改它的java引用達到版本切換的目的。
使用alternatives實現版本切換的方法如下:

1. 查看相應的jdk是否在 ubuntu的jdk菜單里,查看:
update-alternatives --config java
update-alternatives --config javac

2.如果沒有在菜單里可以如下方式添加:
update-alternatives --install /usr/bin/java java /usr/lib/jvm/java/jdk1.6.0_12/bin/java 300
update-alternatives --install /usr/bin/javac javac /usr/lib/jvm/java/jdk1.6.0_12/bin/javac 300
 注意:jdk1.6.0_12 版本不同會有變動

3.sudo update-alternatives --config java
sudo update-alternatives --config javac
選擇序號,回車即可;
4.然后java -version,javac -version查看當前jdk版本

 

但是使用alternatives需要sudo超級權限,也就是說這種切換是一種全局切換,同修改~/.bashrc或/etc/profile一樣,一次操作,全局有效。如果沒有超級權限怎么辦?

設置環境變量linux提供了export命令,該命令的修改只對當前終端有效。

fordreamxin@compiler207:/$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
上面的命令顯示了當前的環境變量,也就是~/.bashrc或/etc/profile文件的內容,它表示了當前所有能夠全局使用的所有軟件或命令的環境變量,沒有這些變量,我們不能在任意目錄下使用很多命令或軟件,這也是環境變量的意義所在。
通過如下命令可以在$PATH的開始或末尾添加jdk的環境變量(bin目錄下保存了java, javac, javah等可執行命令)

export PATH="/usr/lib/jvm/java-7-openjdk-amd64/bin":$PATH

export PATH="$PATH:/usr/lib/jvm/java-7-openjdk-amd64/bin/"
由于執行的時候總是從$PATH的開始搜索可執行文件的位置,所以如果環境變量中已經設置了一個jdk,那么把新的jdk設置在PATH的開始才會有用。

export的具體使用可參考它的使用手冊。

標簽:常德 連云港 公主嶺 呼和浩特 林芝 香港 三明 晉中

巨人網絡通訊聲明:本文標題《linux jdk版本隨時切換版本隨時切換實現方法》,本文關鍵詞  linux,jdk,版本,隨時,切換,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《linux jdk版本隨時切換版本隨時切換實現方法》相關的同類信息!
  • 本頁收集關于linux jdk版本隨時切換版本隨時切換實現方法的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 日日摸夜夜添夜夜添A片| 99热热久久这里只有精品166| 国模无码视频一区二区三区日日新| 欧美人獸交了配XXOO迅雷种子| 一级毛片在线播放免费| 996免费视频国产在线播放| 18款禁用软件app网站无限看软件特色| 国产视频一区在线观看| 国精产品一线二线三线影院| 韩国一级婬片A片AAA| 美女黄网站| 爽?好紧?宝贝别夹大巴图片| eeuss鲁片一区二区三区漫画| 免费打视频的交流软件| chinesegayxnxx| 99热久久6最新地址| gogogo免费高清人体摄影| 一区二区三区伦理高清| 亚洲一区二区约美女探花| 闺蜜们的开放荡交换| 巜人妻侵犯波多野结衣2演员表| 濉溪县| 日本最好的免费影院| 欧美男同GQY巨大男吊| 伦理电影在线观看日韩伦理片免费| 台湾大尺度1069男同志真做| 嫩模福利一一天仙tV| 青青青国内视频在线观看软件| 久久网欧美| 日韩一区二区三区免费体验| 美女靠比| 亚洲秘?AV无码一区二区| 小情侣啪啪| 贱奴爬过来跪下调教服侍主人| 国产大片精品一区二区在线看| 玖玖爱精品视频| 纲手裸乳被爆白浆| 人妻秘书汗接吻中文社长第3季 | 国内自拍第100页| 精品亚洲综合久久中文字幕| 成人18免费观看的动漫|