http://www.oracle.com/technetwork/java/javase/downloads/index.html
选择“Windows x64 180.51 MB jdk-8u51-windows-x64.exe”下载。html
http://www.eclipse.org/downloads/
选择下载“Eclipse IDE for Java EE Developers”64位版(要与JDK的一致,JDK也是64位版)java
1. 默认安装路径是“C:\Program Files\Java\jdk1.8.0_51\”,有人说安装目录不能带空格,不然会出问题(不知是否为真),将其改成“C:\Java\jdk1.8.0_51\”。
注意安装JDK后,弹出安装JRE的路径,默认为“C:\Program Files\Java\jre1.8.0_51\”,咱们在java目录新建一个文件夹jre1.8.0_51,将其改成“C:\Java\jre1.8.0_51\”。算法
2. 设置环境变量:开始->计算机->属性->高级系统设置->环境变量,设置以下:windows
JAVA_HOME(在System Variables下新建) C:\Java\jdk1.8.0_51
CLASSPATH(在System Variables下新建) .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
PATH ;%JAVA_HOME%\binoracle
注意:若是要使用第三方的jre包,在CLASSPATH中务必要将路径详细到.jar,而不能使用目录(如C:\java\jar\)来表明jar目录中全部的jar包。eclipse
3. 测试javac测试
为测试Java编译器(Java compiler)是否正常安装,在cmd中输入"javac -version"看是否正确输出。ui
4. 测试java编码
为测试Java解释器(Java interpreter)是否正常安装,在cmd中输入"java -version"看是否正确输出。spa
5. 测试HelloWOrld
写一个HelloWorld.java程序,编译并运行,有可能会报下面的错误:
D:\TestJava>java HelloWorld Registry key 'Software\JavaSoft\Java Runtime Environment\CurrentVersion' has value '1.8', but '1.6' is required. Error: could not find java.dll Error: could not find Java SE Runtime Environment.
缘由是我之前安装过JRE1.6。环境变量在找java.exe时,找到了之前JRE的环境变量去了。从“HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment”中能够看到1.8和1.6共存。
解决的方法一是能够将环境变量配置“%JAVA_HOME%\bin”移到PATH的最前面,这样首先找到的java.exe将是JDK1.8的。
二是能够在控制面板中将JRE1.6删除(不用重启)。
将Eclipse解压。运行eclipse.exe便可。
1. 打开菜单window->preference,选择 General->Editors->Text Editors,选中右侧的 insert space for tabs,保存。
2. 打开菜单window->preference,选择 java(或C++)->code style ->formatter,点击右侧的Edit...
3. 选则左侧 tab policy的值为spaces only,点击“Apply”应用便可:
4. 若是出现“Apply”应用按钮为灰色的状况,须要回到上一步,点击“new”按钮,根据当前的样式(Eclipse[built-in])从新生成一个新的样式(命名为EclipseTab)并保存。
5. 而后对“EclipseTab” profile 点击“Edit...”,编辑该样式,选则左侧 tab policy的值为spaces only,点击“Apply”应用便可。
6. 回到Formatter界面后,点击“Apply”,应用此“EclipseTab”样式。
官网提供的algs4.exe会下载并安装Java, DrJava, Checkstyle, Findbugs, and the textbook libraries。下载、安装、配置一键完成。若是不想使用algs4.exe默认下载的JDK和DrJava IDE,咱们能够如上面那样手动安装并配置好JDK和Eclipse,而后按如下的方法编译程序。
注意:不使用algs4.exe的话,咱们须要导入的包为stdlib-package.jar和algs4-package.jar,而不该该使用stdlib.jar和algs4.jar。缘由见【2】的QA。
Q. If I use a named package to structure my code, the compiler can no longer access the libraries in stdlib.jar or algs4.jar. Why not? A. The libraries in stdlib.jar and algs4.jar are in the "default" package. In Java, you can't access classes in the default package from a named package. If you need to use our libraries with a named package, you can use these package versions: stdlib-package.jar and algs4-package.jar.
1. 咱们使用BinarySearch.java进行测试,BinarySearch中使用了StdIn,StdOut等stdlib的类,所以咱们须要在源码中import导入这些库。
import java.util.Arrays; import edu.princeton.cs.introcs.In; // 导入stdlib库 import edu.princeton.cs.introcs.StdIn; // 导入stdlib库 import edu.princeton.cs.introcs.StdOut; // 导入stdlib库 public class BinarySearch { private BinarySearch() { } public static int rank(int key, int[] a) { int lo = 0; int hi = a.length - 1; while (lo <= hi) { // Key is in a[lo..hi] or not present. int mid = lo + (hi - lo) / 2; if (key < a[mid]) hi = mid - 1; else if (key > a[mid]) lo = mid + 1; else return mid; } return -1; } public static void main(String[] args) { // read the integers from a file In in = new In(args[0]); int[] whitelist = in.readAllInts(); // sort the array Arrays.sort(whitelist); // read integer key from standard input; print if not in whitelist while (!StdIn.isEmpty()) { int key = StdIn.readInt(); if (rank(key, whitelist) == -1) StdOut.println(key); } } }
2. StdIn,StdOut等类存在于stdlib-package.jar包中,但在Eclipse中是找不到stdlib-package.jar包的,因此咱们须要将jar包导入Eclipse工程中。【3】
在工程的Build Path下选择Add External Archives 而后找到stdlib-package.jar和algs4-package.jar,添加它们就能够了。
3. 在Eclipse编译完后,如何运行呢?由于书上有不少程序都是经过输入重定向来得到输入的,好比:
java BinarySearch tinyW.txt < tinyT.txt
在Eclipse中不方便使用重定向,【3】中的解决办法是:直接用Scanner类。不过我没试过。我采用的办法是在Eclipse编码并编译完成后,在命令行里运行。
1. 因为书上有不少程序都是经过输入重定向来得到输入的,所以使用命令行更容易操做。
2. 可是因为咱们要使用stdlib-package.jar包中类,因此咱们编译以及运行代码时,都要指定jar包的参数。
3. 对于带一个jar包的编译:【4】
编译:javac -cp C:\Java\jdk1.8.0_51\lib\stdlib-package.jar BinarySearch.java
运行1:java -cp C:\Java\jdk1.8.0_51\lib\stdlib-package.jar;%classpath% BinarySearch tinyW.txt < tinyT.txt
运行2:java -cp .;C:\Java\jdk1.8.0_51\lib\stdlib-package.jar BinarySearch tinyW.txt < tinyT.txt
若jar包在当前目录的话,则编译运行为:
编译:javac -cp .\stdlib-package.jar BinarySearch.java
运行:java -cp .\stdlib-package.jar;%classpath% BinarySearch
4. 对于带多个jar包(在当前目录的lib子目录下)的编译:【5】
(1)若是多个jar包文件在同一个子目录下:(a)能够指定子目录;(b)使用通配符
指定子目录:
编译:javac -Djava.ext.dirs=.\lib BinarySearch.java
运行:java -Djava.ext.dirs=.\lib BinarySearch tinyW.txt < tinyT.txt
使用通配符:
编译:javac .\lib\*.jar BinarySearch.java
运行:java .\lib\*.jar BinarySearch tinyW.txt < tinyT.txt
(2)若是多个jar包文件在不一样的目录下:可使用分号”;“分割
编译:javac -Djava.ext.dirs=C:\Java\jdk1.8.0_51\lib\stdlib-package.jar;C:\Java\jdk1.8.0_51\lib\algs4-package.jar BinarySearch.java
运行:javac -Djava.ext.dirs=C:\Java\jdk1.8.0_51\lib\stdlib-package.jar;C:\Java\jdk1.8.0_51\lib\algs4-package.jar BinarySearch tinyW.txt < tinyT.txt
【1】设置Eclipse中的tab键为4个空格的完整方法(http://my.oschina.net/xunxun10/blog/110074)
【2】http://algs4.cs.princeton.edu/code/
【3】算法 第4版 eclipse下环境搭建(http://blog.csdn.net/ChongErxoxo/article/details/42017577)
【4】java带jar包的命令行运行(http://blog.sina.com.cn/s/blog_620b085d0100iwwt.html)
【5】java命令行编译带jar包(http://blog.csdn.net/ssergsw/article/details/9164699)