目錄頁:我的algs4之旅
參照教程:書籍官網(wǎng)在Linux環(huán)境下搭建Java開發(fā)環(huán)境 HELLO WORLD JAVA ON LINUX
安裝Java
我打開樹莓派嘗試在命令行上輸入 java -version
之后,欣喜地發(fā)現(xiàn)樹莓派已經(jīng)提前預裝了Java(JDK1.8),直接跳過教程第0步,省了我好一番事。
安裝開發(fā)環(huán)境
依據(jù)教程中的步驟,完成開發(fā)環(huán)境的安裝。
文件 | 最后所在目錄 | 作用 |
---|---|---|
algs4.jar | /usr/local/algs4 | 書中所用的庫 |
javac-algs4 | /usr/local/bin | 腳本,通過shell編譯.java文件時,指明執(zhí)行javac程序所需的一些信息并執(zhí)行 |
java-algs4 | /usr/local/bin | 腳本,通過shell編譯.class文件時,指明執(zhí)行java程序所需的一些信息并執(zhí)行 |
文件 | 最后所在目錄 | 作用 |
---|---|---|
drjava.jar | /usr/local/algs4 | drjava運行所需的庫 |
drjava | /usr/local/bin | 腳本,指明執(zhí)行DrJava程序所需的一些信息并執(zhí)行 |
.drjava | ~ | DrJava的配置文件 |
文件 | 最后所在目錄 | 作用 |
---|---|---|
checkstyle.zip | /usr/local/algs4 | 壓縮文件,解壓后得到checkstyle-7.4可執(zhí)行文件 |
checkstyle-algs4.xml | /usr/local/algs4 | 配置文件 |
checkstyle-suppressions.xml | /usr/local/algs4 | 配置文件 |
checkstyle-algs4 | /usr/local/bin | 腳本,指明執(zhí)行checkstyle-7.4程序所需的一些信息并執(zhí)行 |
文件 | 最后所在目錄 | 作用 |
---|---|---|
findbugs.zip | /usr/local/algs4 | 壓縮文件,解壓后得到findbugs-3.0.1可執(zhí)行文件 |
findbugs.xml | /usr/local/algs4 | 配置文件 |
findbugs-algs4 | /usr/local/bin | 腳本,指明執(zhí)行findbugs-3.0.1程序所需的一些信息并執(zhí)行 |
過程中遇到個小問題,完成教程所示步驟后,我運行
pi@raspberrypi:/usr/local/algs4 $ drjava
然而出現(xiàn)了...
Exception in thread "main" java.lang.ExceptionInInitializerError
at sun.misc.Unsafe.ensureClassInitialized(Native Method)
at sun.reflect.UnsafeFieldAccessorFactory.newFieldAccessor(UnsafeFieldAccessorFactory.java:43)
at sun.reflect.ReflectionFactory.newFieldAccessor(ReflectionFactory.java:142)
at java.lang.reflect.Field.acquireFieldAccessor(Field.java:1088)
at java.lang.reflect.Field.getFieldAccessor(Field.java:1069)
at java.lang.reflect.Field.get(Field.java:393)
at edu.rice.cs.drjava.config.OptionMapLoader.<clinit>(OptionMapLoader.java:59)
at edu.rice.cs.drjava.config.SavableConfiguration.loadConfiguration(SavableConfiguration.java:58)
at edu.rice.cs.drjava.config.FileConfiguration.loadConfiguration(FileConfiguration.java:65)
at edu.rice.cs.drjava.DrJava._initConfig(DrJava.java:523)
at edu.rice.cs.drjava.DrJava.handleCommandLineArgs(DrJava.java:452)
at edu.rice.cs.drjava.DrJava.main(DrJava.java:242)
Caused by: java.awt.HeadlessException:
No X11 DISPLAY variable was set, but this program performed an operation which requires it.
at sun.awt.HeadlessToolkit.getMenuShortcutKeyMask(HeadlessToolkit.java:236)
at edu.rice.cs.drjava.config.OptionConstants.<clinit>(OptionConstants.java:388)
... 12 more
顯示:X11 DISPLAY變量沒有設置,但該程序需要它(No X11 DISPLAY variable was set, but this program performed an operation which requires it.)
X11 DISPLAY變量是圖形界面所需要的一個變量,我猜這可能是我是Xshell上通過ssh連接樹莓派所致,于是改用VNC,果然,運行成功。
到這里,開發(fā)環(huán)境就算是搭建完了
但我能不能在Xshell那邊弄出這個界面呢?
Windows下通過ssh連接樹莓派(Linux)運行圖形界面程序
參考教程:
發(fā)現(xiàn)在Windows下通過ssh想打開圖形界面的話,還需要Xming軟件,下載地址:
兩個步驟:
- 下載并安裝Xming
Xming安裝過程中會提示你是否選擇安裝PuTTY,我因為有了Xshell,就沒有勾選安裝此項。 - 設置Xshell的屬性
成功在我的Windows機子上運行樹莓派的圖形界面程序drjava...
解釋一下:
這里的原因在于,樹莓派(Linux)本身是沒有圖形界面的,它的圖形界面都是基于X11實現(xiàn)的,而在Windows上并沒有這個X11。
P.S. Linux的圖形界面運行機制在實驗樓的Linux基礎入門(新版)的基本概念及操作中講得挺清楚的,有興趣的朋友可以點過去看看。
通過ssh連接樹莓派運行樹莓派的圖形界面程序,實際上叫樹莓派把運行圖形界面所需的信息通過ssh傳送過來,然后我在Windows這邊依據(jù)這些信息重新搭建出需要的圖形界面程序。
問題就在于Windows上并沒有上面提到的運行樹莓派的圖形界面程序所需的X11,于是,就有了上面的那個報錯信息。
如果我是用一個Linux的系統(tǒng),那連接樹莓派運行圖形界面時,樹莓派通過ssh傳過來的構建圖形界面的信息,我的Linux系統(tǒng)可以接受,直接就可以重新構建出所需的圖形界面。在上面的兩個步驟中,我只要設置Xshell的屬性就可以了。
但我是Windows的環(huán)境,我需要提供一個運行Linux圖形界面的基礎,所以,我需要下載Xming,讓Xming來提供這些東西。
在DrJava上創(chuàng)建一個程序
其實在安裝Java這一步進行好之后,你就可以在你的計算機上編寫、編譯并運行你自己寫的Java程序了,但那樣的話,在一些操作上會比較麻煩(比如沒有語法高亮、括號匹配、自動縮進、行號等)。所以我們選擇在安裝一個集成開發(fā)環(huán)境,就是上面那個步驟中的DrJava了,類似于eclipse、visual studio 2015這些。
所以現(xiàn)在,在DrJava安裝好了之后,我們就要在DrJava這個程序上編寫我們的Java程序了。
這里有一個小問題,如果你是按照algs4官方教程操作,到這里你會發(fā)現(xiàn)你輸入的文字顯示不出來,只有選中一下才能看到自己輸入了什么,就像這樣:
這里的原因是因為剛才前面安裝DrJava時,下載了一個.drjava
的文件,并將它剪切在了我自己的文件夾下,這個文件是DrJava的配置文件,在.drjava
中對DrJava做了一些設置,比如顯示行號等,但同時,它設置了一些字體顏色,其中就有把輸入字體設置為白色的設定。
在自己的文件夾下通過vim查看一下.drjava文件
pi@raspberrypi:~ $ vim .drjava
而DrJava默認的界面外觀(look and feel)的輸入框背景色是白色,所以輸入內容就看不清了。
我的解決方法是更改DrJava的界面外觀,步驟如下:
重啟后即可應用新的界面外觀
如上圖的完成效果圖所示,在文本框中輸入你的Java代碼。
點擊Save按鈕選擇合適的文件夾保存為HelloWorld.java文件
通過DrJava編譯程序
點擊Compile按鈕并在編譯輸出面板看到成功編譯的輸出信息
通過DrJava執(zhí)行程序
編譯成功后,切換到交互面板(Interactions),在>
提示符后輸入java HelloWorld
,不要理我圖中的第一個輸入,那是一個錯誤的示范...
成功執(zhí)行,輸出信息(綠色)Hello, World
到這里,如何在DrJava上編譯運行Java程序已介紹完畢。下面兩點是如何在Shell上編譯運行Java程序(略,自行查看教程);再之后是關于用Checkstyle查看寫的Java代碼風格是否符合代碼編寫規(guī)范,以及Findbugs查找Java代碼中的bug;最后的Troubleshooting(解決問題)是作者回答一些常見的問題(略,自行查看教程)。
Checkstyle和Findbugs
顯示algs4.jar的頭部格式不正確,此處不清楚原因
未出現(xiàn)錯誤信息