這篇文檔將向你介紹如何在Windows系統上安裝本書將用到的Java開發環境,同時我們也提供了一個手把手的、使用我們提供的DrJava工具或者用命令行來創建、編譯和運行你的第一個Java程序的手冊,這個過程中用到的所有軟件都可以自由下載
本操作指南適用於32位和64位的Windows 8、Windows 7、Vista SP1和XP SP3
——————
0. 安裝開發環境
——————
我們提供的安裝器將會自動下載、安裝和配置你將用到的所有開發環境,包括Java SE 7、DrJava、教材庫和命令行工具
-
在電腦上登陸以后你會用來寫代碼的那個Windows賬戶,這個賬戶必須具有管理員權限(Administrator)且電腦必須連接到網絡。『譯者注:以我的經驗,你最好還有一個全局翻牆工具,VPN或者Shadowsocks,不然很有可能下載失敗』
-
下載algs4.exe並雙擊進行安裝,如果在安裝開始前你收到一個用戶賬戶控制的警告,點擊「是」或者「允許」,如果在安裝結束后你收到一個程序兼容性警告,點擊「該程序已正確安裝」
-
如果安裝成功,你將看到如下兩個信息:
- 一個內容這個運行日志的命令行窗口
- 一個內容為藍色靶心和教科書的標准繪圖窗口
需要注意的是:如果你的網絡連接較慢的話,安裝程序需要持續幾分鍾甚至更長時間
-
刪掉「algs4.exe」
——————
1. 在DrJava中創建程序
——————
現在你已經為你的第一個Java程序做好了准備,你將在一個叫DrJava的程序中開發你的Java程序。DrJava包含了語法高亮、匹配括號、自動縮進和顯示行號等特性。
-
在上一節中的安裝包已經在桌面上創建了DrJava的快捷方式『譯者注:如果不慎刪掉,還可以在如下目錄中找到該程序:C:\Users\Username\algs4』。雙擊以啟動DrJava,如果你收到一個Windows安裝警告,點擊「允許運行」或者「不禁止」
-
在DrJava的主窗體中,請向下面一樣准確無誤得輸入HelloWorld.java中的代碼,哪怕你只是漏掉了一個分號,這個程序也不會運行,在你輸入的時候,DrJava會為你准備縮進
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello, World"); } }
- 最后,點擊「保存」按鈕來保存該文件,使用DrJava創建文件夾C:\Users\username\algs4\hello並將文件命名為「HelloWorld.java」,這個文件名是大小寫敏感的而且必須匹配Java程序中的類名,其中username是你的Windows用戶名
——————
2. 在DrJava中編譯程序
——————
現在我們來將你的Java代碼轉化為可以在你的電腦上運行的東西,點擊「編譯」按鈕(Compile),如果一切順利的話,你會在DrJava底部的編譯器輸出窗格(Compiler Output Pane)看到這樣一條信息
Compilation completed.
如果DrJava沒有編譯成功,你應該是輸入錯了一些東西,重新仔細檢查你的代碼,你可以用編譯器輸出窗格中的信息作為參考
——————
3. 在DrJava中運行程序
——————
現在來運行你的程序,這是很有趣的部分
- 在底部的交互窗格(Interactions pane)中輸入下列信息,按照習慣,我們高亮了你用粗體輸入的部分『譯者注:由於博客模板限制我沒辦法在我這里加粗相應內容,需要看加粗的去看原文吧』
> java HelloWorld
如果一切順利,你會看到如下信息:
Welcome to DrJava. Working directory is C:\Users\username\algs4\hello > java HelloWorld Hello, World
- 你或許會在成功運行前重復很多遍「編輯 - 編譯 - 運行」的循環
——————
4. 命令行界面
——————
命令行工具提供了DrJava中也有的功能,包括重定向和管道。你將在「命令行工具」中輸入你的指令
- 安裝器在桌面上創建了一個命令行工具(Command Prompt),雙擊以啟動命令行,你將會看到類似於這樣的消息:
Microsoft Windows [Version 6.3.9600] (c) 2013 Microsoft Corporation. All rights reserved. C:\Users\username>
- 首先確認一下Java編譯器已經被正確安裝,在命令行中輸入
javac -version
並確保輸出內容跟下面一樣
C:\Users\username>javac -version javac 1.7.0_67
- 其次確認一下Java解釋器被正確安裝,在命令行中輸入
java -version
並確保輸出內容跟下面一樣
C:\Users\username>java -version java version "1.7.0_67" Java(TM) SE Runtime Environment (build 1.7.0_67-b01) Java HotSpot(TM) 64-Bit Server VM (build 24.65-b04, mixed mode)
如果你的機器是32位的,那么最后一行的內容應該是
Java HotSpot(TM) Client VM (build 24.65-b04, mixed mode, sharing)
——————
5. 在命令行中編譯程序
——————
你可以使用javac
命令來將你的Java代碼轉化為可以在你的電腦上運行的東西
- 在命令行中,通過
cd
命令導航到包含HelloWorld.java
的目錄下,一般是C:\Users\username\algs4\hello
,例如:
C:\Users\username>cd C:\Users\username\algs4\hello C:\Users\username\algs4\hello>
用javac
命令進行編譯
C:\Users\username\algs4\hello>javac HelloWorld.java C:\Users\username\algs4\hello>
如果HelloWorld.java
在當前目錄下的話,你應該沒有看到任何報錯信息
- 如果用到了我們的標准庫,你應該用
javac-algs4
來代替javac
,例如:如果需要編譯TestAlgs4.java,這個程序引用了我們的標准繪圖庫,你應該這樣寫命令:
C:\Users\username\algs4>javac-algs4 TestAlgs4.java
『譯者注 - start』
同理,如果你需要運行javac-algs4
編譯出來的.class
文件的話,你也需要使用java-algs4
來運行,而不是使用java
來運行
『譯者注 - end』
——————
6. 在命令行中運行程序
——————
- 你需要使用
java
命令來運行你的程序:
C:\Users\username\algs4\hello>java HelloWorld Hello, World
你會在輸出中看到Hello, World
- 如果你想使用教科書提供的庫的話,需要用
java-algs4
來替代java
,例如,在測試標准繪圖和標准音頻時你可以使用下面兩條命令:
『譯者注:使用之前需要注意!!!第一條命令是標准繪圖,隨便使用;第二條命令是標准音頻,使用之后麥克風會開始播放奇怪的聲音,請先調小音量,運行之后如果需要停止運行,除了直接關閉命令行窗口外,你還可以使用Ctrl+C的組合鍵來關閉這個運行』
C:\Users\username\algs4\hello>java-algs4 edu.princeton.cs.algs4.StdDraw [ displays a graphics window with some geometric shapes and text ] C:\Users\username\algs4\hello>java-algs4 edu.princeton.cs.algs4.StdAudio [ plays an A major scale ]
——————
7. 檢查風格和查找bug
——————
你可以使用檢查縫合查找bug兩個工具來核查你的代碼風格並檢查一些簡單的bug
- 在命令行中可以這樣使用檢查風格功能:
C:\Users\username\algs4\hello>checkstyle-algs4 HelloWorld.java Running checkstyle on HelloWorld.java: Starting audit... Audit done.
下面是一張可以檢查的清單,你可以自定義這個風格檢查,自定義的方法是編輯這個文件:C:\Users\username\algs4\checkstyle-6.9\checkstyle.xml
- 在命令行中可以這樣使用查找bug功能
C:\Users\username\algs4\hello>findbugs-algs4 HelloWorld.class Running findbugs on HelloWorld.class:
下面是一張可以檢查的清單,你可以自定義這個bug檢查,自定義的方法是編輯這個文件:C:\Users\username\algs4\findbugs-3.0.1\findbugs.xml
——————
常見問題
——————
Q:我之前使用過另一本教材「Introduction to Programming in Java」的「introcs.app」安裝器,我還應該使用「algs4.exe」安裝器嗎?
A: 是的,我們推薦「algs4.exe」安裝器是因為「introcs.app」安裝器不包含「algs4.jar」庫和相應的命令javac-algs4
和java-algs4
Q: 運行安裝器時我遇到了訪問被拒絕的錯誤信息,我該怎么辦
A: 確保你使用了一個管理員權限的賬戶,再重新運行一次安裝器。另外,你的機器上可能有加密軟件禁止寫入C:\Users\username\AppData\Local
目錄,這也可能導致安裝器運行失敗
Q:安裝器根本不運行,為什么?
A:這個安裝器的運行需要PowerShell。運行Windows Update來升級你的電腦,如果是XP系統,你需要SP3。在XP SP3或者Vista環境下你也可以手動下載PowerShell2.0
Q: 我可以把安裝目錄設置在C盤以外的驅動器上嗎?
可以,但是你需要自己手動修改參數
Q: 安裝器在我的機器上不工作,怎么辦?
A: 聯系一個工作人員,然后檢查一下哪兒出問題了
Q: 安裝器到底做了些什么?
A: 簡而言之就是:下載,安裝,配置了Java、DrJava、Checkstyle、Findbugs和教材庫,下面是一個更加詳細的清單:
-
從java32.zip或者java64.zip下載和安裝Java SE 7 Update 67,這其中包含了Java Runtime Environment(java.exe)和一部分Java Development Kit(javac.exe and toools.jar)
-
從algs4.jar下載教材庫,並創建好
javac-algs4
和java-algs4
的包裝腳本 -
從checkstyle.zip下載並安裝Checkstyle 6.9,並從checkstyle.xml下載checkstyle的配置文件,給
checkstyle-algs4
創建包裝腳本 -
從findbugs.zip下載和安裝Findbug3.0.1,從findbugs.xml下載findbugs的配置文件,為
findbugs-algs4
創建包裝腳本 -
從drjava.jar下載最新版本的DrJava,為DrJava在桌面上創建一個快捷方式,從drjava-config.txt下載一個DrJava的配置文件到
C:\Users\username\.drjava
,注意,這個操作會覆蓋掉任何已經存在的.drjava
配置文件 -
在環境變量中,將
C:\Users\username\algs4\java\bin
和C:\Users\username\algs4\bin
添加到用戶變量的PATH中 -
定制命令行工具,啟用QuickEdit和Insert模式,將Screen Buffer Size設置為800-by-500,在桌面上創建一個命令行的快捷方式
-
通過編譯和運行TestAlgs4.java測試是否安裝成功
**Q: 我要如何完全卸載 algs4.exe ?
A:
-
刪除
C:\Users\username\algs4
文件夾(但是要注意保存你的.java文件) -
從你的環境變量的PATH變量中刪除下面兩個條目:
-
C:\Users\username\algs4\bin
-
C:\Users\username\algs4\bin
-
-
刪除DrJava配置文件
C:\Users\username\.drjava
-
刪除桌面上的DrJava和命令行的快捷方式
Q: 我如果重新運行安裝器會怎么樣?
A: 重新下載、安裝一遍,完全重復上述過程
Q: 如果我之前在其他位置安裝過DrJava會怎么樣?
A: 我們建議你刪除他然后使用C:\Users\username\algs4
這個版本
Q: 我可以使用其他版本的Java 嗎?
A: 是的,但你需要自行配置Windows環境變量和DrJava的編譯器屬性
Q: 我可以使用除了DrJava以外的IDE嗎?
A: 是的,你可以使用其他的IDE(比如Eclipse)但你需要自己配置編譯器屬性,比如classpath
Q: 當我啟動Eclipse時,我收到這樣一個報錯信息“Failed to load JNI shared library”,我該怎么辦?
A: 你多半是使用了一個64位的Java和32位的Eclipse。如果你是64位的機器,安裝器會自動安裝64位的Java,這會替代之前的32位版本的Java。有兩種方法解決這個問題:要么將Eclipse升級到64位,要么將C:\Users\username\introcs\java
移除,這樣的話Windows就會使用之前的32位Java。當然你可以可以在Eclipse.ini中指定使用特定的Java版本
Q: 我要怎么中斷一個無限循環?
A: 在DrJava中,直接點擊Reset按鈕即可或者在菜單里選擇Tools->Reset Interactions
,如果是在命令行里面的話,使用Ctrl+C
Q: 當使用標准輸入時,我要怎么表明輸入完成(沒有后續數據了)
A: 如果你是從鍵盤輸入的話,使用Ctrl+z
表示文件結尾(EOF)
Q: 在Windows中要怎么顯示 .java 和 .class 的后綴名?
A: 在很多Windows系統中后綴名都被隱藏了,在這種情況下,這樣打開他,選擇Start -> My Computer -> Tools -> Folder Options -> View
,取消對Hide file extensions for known file types
選項的選中狀態,確認退出即可
Q: 當我在命令行輸入java -version
和javac -version
時報錯了,我該怎么辦?
A: 首先確認這兩個文件存在:
C:\Users\username\algs4\java\bin\javac.exe
C:\Users\username\algs4\java\bin\java.exe
如果存在的話,應該是環境變量中PATH的值不對,在命令行中輸入下面一句:
C:\Users\username> echo %PATH%
PATH環境變量應該包含C:\Users\username\algs4\java\bin
Q: 當我在命令行中編譯或者運行一個引用了教材庫的程序時報錯了,為什么?
A: 注意要使用javac-algs4
和java-algs4
而不是javac
或者java
Q: 在命令行中我應該如何導航到另一個驅動器?
A: 在命令行中,用H:
導航到H盤,用cd
導航到當前驅動器的其他文件夾
Q: 我該如何學習更多與命令行有關的知識?
A: 微軟提供了一個命令行知識庫
Q: 我是否可以用Windows PowerShell來替代命令行?
A: PowerShell是一個比命令行更高級的命令行工具,但是,它現在還不支持重定向標准輸入