Ubuntu安裝java和使用update-java-alternatives進行切換

Ubuntu 安裝 Java JDK

個人覺得:android studio 和 oracle-jdk都不建議使用ppa的方法安裝,因為這兩個軟件較大,建議下載壓縮包到/opt,再進行設置。這樣以后更換系統或者電腦時直接把/opt目錄復制過去即可。

切換jdk涉及到的命令

  • update-alternatives
  • update-java-alternatives : 通過sudo apt install java-common安裝

查看java版本的命令:

java -version

注意:這里不是java --version,被這個坑了。

update-alternatives命令的學習可參考: update-alternatives

安裝open-jdk

sudo apt-get install openjdk-8-jdk

附:安裝后自動設置的update-alternatives

update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmid 來在自動模式中提供 /usr/bin/rmid (rmid)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 來在自動模式中提供 /usr/bin/java (java)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/keytool 來在自動模式中提供 /usr/bin/keytool (keytool)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/jjs 來在自動模式中提供 /usr/bin/jjs (jjs)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/pack200 來在自動模式中提供 /usr/bin/pack200 (pack200)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/rmiregistry 來在自動模式中提供 /usr/bin/rmiregistry (rmiregistry)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/unpack200 來在自動模式中提供 /usr/bin/unpack200 (unpack200)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/orbd 來在自動模式中提供 /usr/bin/orbd (orbd)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/servertool 來在自動模式中提供 /usr/bin/servertool (servertool)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/tnameserv 來在自動模式中提供 /usr/bin/tnameserv (tnameserv)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/lib/jexec 來在自動模式中提供 /usr/bin/jexec (jexec)
正在設置 openjdk-8-jre:amd64 (8u131-b11-0ubuntu1.16.04.2) ...
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/policytool 來在自動模式中提供 /usr/bin/policytool (policytool)
正在設置 openjdk-8-jdk-headless:amd64 (8u131-b11-0ubuntu1.16.04.2) ...
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/idlj 來在自動模式中提供 /usr/bin/idlj (idlj)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jdeps 來在自動模式中提供 /usr/bin/jdeps (jdeps)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/wsimport 來在自動模式中提供 /usr/bin/wsimport (wsimport)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/rmic 來在自動模式中提供 /usr/bin/rmic (rmic)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jinfo 來在自動模式中提供 /usr/bin/jinfo (jinfo)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jsadebugd 來在自動模式中提供 /usr/bin/jsadebugd (jsadebugd)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/native2ascii 來在自動模式中提供 /usr/bin/native2ascii (native2ascii)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jstat 來在自動模式中提供 /usr/bin/jstat (jstat)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/javadoc 來在自動模式中提供 /usr/bin/javadoc (javadoc)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/javah 來在自動模式中提供 /usr/bin/javah (javah)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jstack 來在自動模式中提供 /usr/bin/jstack (jstack)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jrunscript 來在自動模式中提供 /usr/bin/jrunscript (jrunscript)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/javac 來在自動模式中提供 /usr/bin/javac (javac)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/javap 來在自動模式中提供 /usr/bin/javap (javap)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jar 來在自動模式中提供 /usr/bin/jar (jar)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/extcheck 來在自動模式中提供 /usr/bin/extcheck (extcheck)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/schemagen 來在自動模式中提供 /usr/bin/schemagen (schemagen)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jps 來在自動模式中提供 /usr/bin/jps (jps)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/xjc 來在自動模式中提供 /usr/bin/xjc (xjc)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jmap 來在自動模式中提供 /usr/bin/jmap (jmap)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jstatd 來在自動模式中提供 /usr/bin/jstatd (jstatd)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jhat 來在自動模式中提供 /usr/bin/jhat (jhat)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jdb 來在自動模式中提供 /usr/bin/jdb (jdb)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/serialver 來在自動模式中提供 /usr/bin/serialver (serialver)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/wsgen 來在自動模式中提供 /usr/bin/wsgen (wsgen)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jcmd 來在自動模式中提供 /usr/bin/jcmd (jcmd)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jarsigner 來在自動模式中提供 /usr/bin/jarsigner (jarsigner)
正在設置 openjdk-8-jdk:amd64 (8u131-b11-0ubuntu1.16.04.2) ...
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/appletviewer 來在自動模式中提供 /usr/bin/appletviewer (appletviewer)
update-alternatives: 使用 /usr/lib/jvm/java-8-openjdk-amd64/bin/jconsole 來在自動模式中提供 /usr/bin/jconsole (jconsole)

安裝orecle-jdk

安裝方式一:使用ppa

使用第三方源,ppa地址: https://launchpad.net/~webupd8team/+archive/ubuntu/java

sudo add-apt-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer 

# 下面兩條命令在安裝過程中安裝器會提示你是否同意 oracle 的服務條款
# 安裝 java 8
sudo apt-get install oracle-java8-installer
# 安裝 java 7
sudo apt-get install oracle-java7-installer

# 也可使用下面的兩條命令,默認就同意oracle的服務條款
# JDK7 默認同意條款: 使用下面的命令
echo oracle-java7-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections
# JDK8 默認同意條款: 使用下面的命令
echo oracle-java8-installer shared/accepted-oracle-license-v1-1 select true | sudo /usr/bin/debconf-set-selections

附:安裝時update-alternatives的輸出

update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/ControlPanel to provide /usr/bin/ControlPanel (ControlPanel) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/java to provide /usr/bin/java (java) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/javaws to provide /usr/bin/javaws (javaws) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/jcontrol to provide /usr/bin/jcontrol (jcontrol) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/jjs to provide /usr/bin/jjs (jjs) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/keytool to provide /usr/bin/keytool (keytool) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/orbd to provide /usr/bin/orbd (orbd) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/pack200 to provide /usr/bin/pack200 (pack200) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/policytool to provide /usr/bin/policytool (policytool) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/rmid to provide /usr/bin/rmid (rmid) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/rmiregistry to provide /usr/bin/rmiregistry (rmiregistry) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/servertool to provide /usr/bin/servertool (servertool) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/tnameserv to provide /usr/bin/tnameserv (tnameserv) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/bin/unpack200 to provide /usr/bin/unpack200 (unpack200) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/lib/jexec to provide /usr/bin/jexec (jexec) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/appletviewer to provide /usr/bin/appletviewer (appletviewer) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/extcheck to provide /usr/bin/extcheck (extcheck) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/idlj to provide /usr/bin/idlj (idlj) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jar to provide /usr/bin/jar (jar) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jarsigner to provide /usr/bin/jarsigner (jarsigner) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/javac to provide /usr/bin/javac (javac) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/javadoc to provide /usr/bin/javadoc (javadoc) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/javafxpackager to provide /usr/bin/javafxpackager (javafxpackager) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/javah to provide /usr/bin/javah (javah) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/javap to provide /usr/bin/javap (javap) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/javapackager to provide /usr/bin/javapackager (javapackager) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jcmd to provide /usr/bin/jcmd (jcmd) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jconsole to provide /usr/bin/jconsole (jconsole) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jdb to provide /usr/bin/jdb (jdb) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jdeps to provide /usr/bin/jdeps (jdeps) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jhat to provide /usr/bin/jhat (jhat) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jinfo to provide /usr/bin/jinfo (jinfo) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jmap to provide /usr/bin/jmap (jmap) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jmc to provide /usr/bin/jmc (jmc) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jps to provide /usr/bin/jps (jps) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jrunscript to provide /usr/bin/jrunscript (jrunscript) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jsadebugd to provide /usr/bin/jsadebugd (jsadebugd) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jstack to provide /usr/bin/jstack (jstack) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jstat to provide /usr/bin/jstat (jstat) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jstatd to provide /usr/bin/jstatd (jstatd) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/jvisualvm to provide /usr/bin/jvisualvm (jvisualvm) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/native2ascii to provide /usr/bin/native2ascii (native2ascii) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/rmic to provide /usr/bin/rmic (rmic) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/schemagen to provide /usr/bin/schemagen (schemagen) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/serialver to provide /usr/bin/serialver (serialver) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/wsgen to provide /usr/bin/wsgen (wsgen) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/wsimport to provide /usr/bin/wsimport (wsimport) in 自動模式
update-alternatives: using /usr/lib/jvm/java-8-oracle/bin/xjc to provide /usr/bin/xjc (xjc) in 自動模式
update-binfmts: warning: current package is oracle-java8, but binary format already installed by openjdk-7
Oracle JDK 8 installed
update-alternatives: using /usr/lib/jvm/java-8-oracle/jre/lib/amd64/libnpjp2.so to provide /usr/lib/mozilla/plugins/libjavaplugin.so (mozilla-javaplugin.so) in 自動模式
Oracle JRE 8 browser plugin installed

如果installer下載速度很慢,可以中斷操作,然后去官網下載相應jdk的壓縮包,放在:/var/cache/oracle-jdk7-installer(jdk7) 或者/var/cache/oracle-jdk8-installer (jdk8) 下面,然后再安裝一次installer. installer 則會默認使用 你下載的tar.gz包。

參考:

安裝方式二:下載壓縮包

1.下載

下載: jdk-8u××-linux-x64.tar.gz壓縮包 Java SE Development Kit 8 - Downloads,解壓到/opt 。

2.設置環境變量

設置Java所需的系統環境變量:假設解壓后的路徑為 /opt/jdk1.8.0_91

export JAVA_HOME=/opt/jdk1.8.0_91
export JRE_HOME=$JAVA_HOME/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

3.使用 update-alternatives 切換 java

這里提前講解使用update-alternatives切換java,因為它一般只在這里使用;其它情況下推薦使用update-java-alternatives來進行切換。

1.先使用update-alternatives安裝幾個java相關的alternative(就叫它"候選項"吧)

JAVAHOME="壓縮包解壓后的路徑"
sudo update-alternatives --install /usr/bin/java java $JAVAHOME/bin/java 300
sudo update-alternatives --install /usr/bin/javac javac $JAVAHOME/bin/javac 300
sudo update-alternatives --install /usr/bin/javaws javaws $JAVAHOME/bin/javaws 300

還記得上面通過apt-get或者dpkg安裝的jdk的deb包時,update-alternatives命令的輸出嗎?是不是很長,那是自動的,這里手動運行我們就只弄這幾個了。

2.如果想使用該java版本,則通過update-alternatives切換該java相關的alternative

sudo update-alternatives --config javac
sudo update-alternatives --config java
sudo update-alternatives --config javaws

補充:

默認情況下alternatives將自動安裝最佳版本的Java作為默認版本。如果使用命令update-alternatives --config java更改了alernatives后 (變成了manually select手動選擇) 想設置回默認值,可以使用update-alternatives --auto java

手動選擇 alternatives:

# 先查看
update-alternatives --display java
# 再更改
update-alternatives --config java 
# 然后選擇某個 alternatives 對應的數字

The appropriate java binary will automatically be in PATH(相應的java二進制文件將自動在PATH中) by virtue of the /usr/bin/java alternative symlink.

$ ll /usr/bin/java
lrwxrwxrwx 1 root root 22 7月  22 19:37 /usr/bin/java -> /etc/alternatives/java*

使用update-java-alternatives切換java

也可選擇使用 update-java-alternatives 進行切換,但還要進行更多的設置。

update-java-alternatives沒有提供類似--install的選項
也可以通過之前安裝時的輸出進行設置,不過真的很多。

參考:
How do I make java default to a manually installed JRE/JDK? - Ask Ubuntu
JavaPackage - Debian Wiki
update-java-alternatives vs update-alternatives --config java - Ask Ubuntu

update-java-alternatives介紹

你也看到了上面安裝一個jdk最后會使用update-alternatives設置n多的alternatives。

那么在每次切換java的jre或jdk時我們需要同時對他們進行切換就非常麻煩,這時可以使用update-java-alternatives,它允許您一次更新屬于一個runtime/development kit的所有alternatives。

java-common 提供了 update-java-alternatives 命令。
查看man文檔 man update-java-alternatives可知,存在一個配置文檔/usr/lib/jvm/.*.jinfo

切換使用apt-get或dpkg安裝的jdk

這樣安裝的jdk,默認就設置了/usr/lib/jvm/.*.jinfo文件;并使用了update-alternatives --install設置安裝了所需的候選項;所以可以直接進行切換即可。

先查看已經配置好的java版本可供選擇(輸出的第一列的名稱,我們把它叫做jname吧):

sudo update-java-alternatives -l

再進行切換:

sudo update-java-alternatives -s <jname>

切換通過壓縮包安裝的jdk

相比前面的切換這里還要先進行一些配置。假設 jdk 保存路徑為 /opt/jdk1.8.0_91/

步驟:

  • 使用update-alternatives --install設置安裝所需的候選項(由于候選項太多,所以將其全部寫在一個腳本文件中)
  • 創建/usr/lib/jvm/.*.jinfo文件(這是一個隱藏文件以.開頭)
  • 創建鏈接到/opt/jdk1.8.0_91/的軟鏈接
  • 運行update-java-alternatives -l命令查看是否已經添加了該候選項。
  • 運行update-java-alternatives -s <jname>進行切換。

使用到的兩個腳本文件見: Ubuntu安裝oracle jdk alternatives和配置update-java-alternatives的腳本

操作演示見:orecle-jdk-alternatives - asciinema

也可以參考/usr/lib/jvm/目錄下的現有配置:

$ ll /usr/lib/jvm/
總用量 24K
drwxr-xr-x   3 root root 4.0K 7月  22 19:37 ./
drwxr-xr-x 140 root root  12K 7月  23 00:07 ../
lrwxrwxrwx   1 root root   20 5月   6 11:55 java-1.8.0-openjdk-amd64 -> java-8-openjdk-amd64/
-rw-r--r--   1 root root 2.6K 5月   6 11:55 .java-1.8.0-openjdk-amd64.jinfo
drwxr-xr-x   7 root root 4.0K 7月  22 19:37 java-8-openjdk-amd64/

由此可知,openjdk-8直接安裝到了 /usr/lib/jvm/java-8-openjdk-amd64下面;然后添加了一個軟鏈接和一個隱藏的.jinfo文件。

參考:
Generate ".jdk1.8.jinfo" and "alternatives.sh" files to install java 8 using ubuntu alternatives.
ancho/jinfo-alternatives: Install custom java alternatives on debian based distros with jinfo-files

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 228,923評論 6 535
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 98,740評論 3 420
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 176,856評論 0 380
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,175評論 1 315
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 71,931評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,321評論 1 324
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,383評論 3 443
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,533評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,082評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 40,891評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,067評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,618評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,319評論 3 347
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,732評論 0 27
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 35,987評論 1 289
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 51,794評論 3 394
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,076評論 2 375

推薦閱讀更多精彩內容