1、用Java开发的前提就是安装完jdk后并进行正确的环境变量设置,很多人在设置环境变量时都喜欢新建或设置三个变量:JAVA_HOME、PATH、CLASSPATH;其实经过实践证明,只需要正确设置前两个环境变量JAVA_HOME和PATH就可以了,第三个不仅没有必要设置,而且容易出错(如网上有些设置值为.;%JAVA_HOME%\lib\tools.jar;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\jre\lib注意最前面还有个实心点和分号)。
2、在设置JAVA_HOME时,一定要定位到jdk_版本号的安装目录中,如C:\Program Files\Java\jdk1.6.0_20,这样有个好处是在进行开发时,可以看到jdk自身类库源码,如String.class中substring等方法源码;
3、其实仔细查看下jdk安装目录,其中结构非常简单,可以在安装目录下利用tree命令把结果重定向到文件中查看:
卷 Windows7_OS 的文件夹 PATH 列表 卷序列号为 00000200 30A9:F101 C:. ├─jdk1.6.0_20 │ ├─bin │ ├─demo │ │ ├─applets │ │ │ ├─Animator │ │ │ │ ├─audio │ │ │ │ └─images │ │ │ │ ├─Beans │ │ │ │ └─SimpleAnimation │ │ │ ├─ArcTest │ │ │ ├─BarChart │ │ │ ├─Blink │ │ │ ├─CardTest │ │ │ ├─Clock │ │ │ ├─DitherTest │ │ │ ├─DrawTest │ │ │ ├─Fractal │ │ │ ├─GraphicsTest │ │ │ ├─GraphLayout │ │ │ │ └─audio │ │ │ ├─ImageMap │ │ │ │ ├─audio │ │ │ │ └─images │ │ │ ├─JumpingBox │ │ │ │ └─sounds │ │ │ ├─MoleculeViewer │ │ │ │ └─models │ │ │ ├─NervousText │ │ │ ├─SimpleGraph │ │ │ ├─SortDemo │ │ │ ├─SpreadSheet │ │ │ ├─TicTacToe │ │ │ │ ├─audio │ │ │ │ └─images │ │ │ └─WireFrame │ │ │ └─models │ │ ├─jfc │ │ │ ├─CodePointIM │ │ │ │ └─src │ │ │ │ └─resources │ │ │ ├─FileChooserDemo │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─images │ │ │ ├─Font2DTest │ │ │ │ └─src │ │ │ ├─Java2D │ │ │ │ └─src │ │ │ │ ├─fonts │ │ │ │ ├─images │ │ │ │ └─java2d │ │ │ │ └─demos │ │ │ │ ├─Arcs_Curves │ │ │ │ ├─Clipping │ │ │ │ ├─Colors │ │ │ │ ├─Composite │ │ │ │ ├─Fonts │ │ │ │ ├─Images │ │ │ │ ├─Lines │ │ │ │ ├─Mix │ │ │ │ ├─Paint │ │ │ │ ├─Paths │ │ │ │ └─Transforms │ │ │ ├─Laffy │ │ │ ├─Metalworks │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─HelpFiles │ │ │ ├─Notepad │ │ │ │ └─src │ │ │ │ └─resources │ │ │ ├─SampleTree │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─images │ │ │ ├─Stylepad │ │ │ │ └─src │ │ │ │ └─resources │ │ │ ├─SwingApplet │ │ │ │ └─src │ │ │ ├─SwingSet2 │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─images │ │ │ │ ├─buttons │ │ │ │ ├─combobox │ │ │ │ ├─filechooser │ │ │ │ ├─htmldemo │ │ │ │ ├─ImageClub │ │ │ │ │ ├─food │ │ │ │ │ └─misc │ │ │ │ ├─list │ │ │ │ ├─Octavo │ │ │ │ ├─optionpane │ │ │ │ ├─scrollpane │ │ │ │ ├─splitpane │ │ │ │ ├─tabbedpane │ │ │ │ ├─toolbar │ │ │ │ └─tooltip │ │ │ ├─SwingSet3 │ │ │ └─TableExample │ │ │ └─src │ │ ├─jpda │ │ ├─jvmti │ │ │ ├─agent_util │ │ │ │ └─src │ │ │ ├─gctest │ │ │ │ ├─lib │ │ │ │ └─src │ │ │ ├─heapTracker │ │ │ │ ├─lib │ │ │ │ └─src │ │ │ ├─heapViewer │ │ │ │ ├─lib │ │ │ │ └─src │ │ │ ├─hprof │ │ │ │ └─src │ │ │ │ └─windows │ │ │ ├─java_crw_demo │ │ │ │ └─src │ │ │ ├─minst │ │ │ │ ├─lib │ │ │ │ └─src │ │ │ ├─mtrace │ │ │ │ ├─lib │ │ │ │ └─src │ │ │ ├─versionCheck │ │ │ │ ├─lib │ │ │ │ └─src │ │ │ └─waiters │ │ │ ├─lib │ │ │ └─src │ │ ├─management │ │ │ ├─FullThreadDump │ │ │ │ └─src │ │ │ ├─JTop │ │ │ │ └─src │ │ │ │ └─META-INF │ │ │ │ └─services │ │ │ ├─MemoryMonitor │ │ │ │ └─src │ │ │ └─VerboseGC │ │ │ └─src │ │ ├─nbproject │ │ │ ├─jfc │ │ │ │ ├─FileChooserDemo │ │ │ │ │ └─nbproject │ │ │ │ ├─Font2DTest │ │ │ │ │ └─nbproject │ │ │ │ ├─Java2D │ │ │ │ │ └─nbproject │ │ │ │ ├─Metalworks │ │ │ │ │ └─nbproject │ │ │ │ ├─Notepad │ │ │ │ │ └─nbproject │ │ │ │ ├─SampleTree │ │ │ │ │ └─nbproject │ │ │ │ ├─Stylepad │ │ │ │ │ └─nbproject │ │ │ │ ├─SwingApplet │ │ │ │ │ └─nbproject │ │ │ │ ├─SwingSet2 │ │ │ │ │ └─nbproject │ │ │ │ └─TableExample │ │ │ │ └─nbproject │ │ │ ├─management │ │ │ │ ├─FullThreadDump │ │ │ │ │ └─nbproject │ │ │ │ ├─JTop │ │ │ │ │ └─nbproject │ │ │ │ ├─MemoryMonitor │ │ │ │ │ └─nbproject │ │ │ │ └─VerboseGC │ │ │ │ └─nbproject │ │ │ └─scripting │ │ │ └─jconsole-plugin │ │ │ └─nbproject │ │ ├─plugin │ │ │ ├─applets │ │ │ │ ├─Animator │ │ │ │ │ ├─audio │ │ │ │ │ └─images │ │ │ │ │ ├─Beans │ │ │ │ │ └─SimpleAnimation │ │ │ │ ├─ArcTest │ │ │ │ ├─BarChart │ │ │ │ ├─Blink │ │ │ │ ├─CardTest │ │ │ │ ├─Clock │ │ │ │ ├─DitherTest │ │ │ │ ├─DrawTest │ │ │ │ ├─Fractal │ │ │ │ ├─GraphicsTest │ │ │ │ ├─GraphLayout │ │ │ │ │ └─audio │ │ │ │ ├─ImageMap │ │ │ │ │ ├─audio │ │ │ │ │ └─images │ │ │ │ ├─JumpingBox │ │ │ │ │ └─sounds │ │ │ │ ├─MoleculeViewer │ │ │ │ │ └─models │ │ │ │ ├─NervousText │ │ │ │ ├─SimpleGraph │ │ │ │ ├─SortDemo │ │ │ │ ├─SpreadSheet │ │ │ │ ├─TicTacToe │ │ │ │ │ ├─audio │ │ │ │ │ └─images │ │ │ │ └─WireFrame │ │ │ │ └─models │ │ │ └─jfc │ │ │ ├─CodePointIM │ │ │ │ └─src │ │ │ │ └─resources │ │ │ ├─FileChooserDemo │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─images │ │ │ ├─Font2DTest │ │ │ │ └─src │ │ │ ├─Java2D │ │ │ │ └─src │ │ │ │ ├─fonts │ │ │ │ ├─images │ │ │ │ └─java2d │ │ │ │ └─demos │ │ │ │ ├─Arcs_Curves │ │ │ │ ├─Clipping │ │ │ │ ├─Colors │ │ │ │ ├─Composite │ │ │ │ ├─Fonts │ │ │ │ ├─Images │ │ │ │ ├─Lines │ │ │ │ ├─Mix │ │ │ │ ├─Paint │ │ │ │ ├─Paths │ │ │ │ └─Transforms │ │ │ ├─Laffy │ │ │ ├─Metalworks │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─HelpFiles │ │ │ ├─Notepad │ │ │ │ └─src │ │ │ │ └─resources │ │ │ ├─SampleTree │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─images │ │ │ ├─Stylepad │ │ │ │ └─src │ │ │ │ └─resources │ │ │ ├─SwingApplet │ │ │ │ └─src │ │ │ ├─SwingSet2 │ │ │ │ └─src │ │ │ │ └─resources │ │ │ │ └─images │ │ │ │ ├─buttons │ │ │ │ ├─combobox │ │ │ │ ├─filechooser │ │ │ │ ├─htmldemo │ │ │ │ ├─ImageClub │ │ │ │ │ ├─food │ │ │ │ │ └─misc │ │ │ │ ├─list │ │ │ │ ├─Octavo │ │ │ │ ├─optionpane │ │ │ │ ├─scrollpane │ │ │ │ ├─splitpane │ │ │ │ ├─tabbedpane │ │ │ │ ├─toolbar │ │ │ │ └─tooltip │ │ │ ├─SwingSet3 │ │ │ └─TableExample │ │ │ └─src │ │ └─scripting │ │ └─jconsole-plugin │ │ └─src │ │ ├─com │ │ │ └─sun │ │ │ └─demo │ │ │ └─scripting │ │ │ └─jconsole │ │ ├─META-INF │ │ │ └─services │ │ ├─resources │ │ └─scripts │ ├─include │ │ └─win32 │ ├─jre │ │ ├─bin │ │ │ ├─client │ │ │ ├─new_plugin │ │ │ └─server │ │ └─lib │ │ ├─applet │ │ ├─audio │ │ ├─cmm │ │ ├─deploy │ │ │ └─jqs │ │ │ ├─ff │ │ │ │ └─chrome │ │ │ │ └─content │ │ │ └─ie │ │ ├─ext │ │ ├─fonts │ │ ├─i386 │ │ ├─im │ │ ├─images │ │ │ └─cursors │ │ ├─management │ │ ├─security │ │ ├─servicetag │ │ └─zi │ │ ├─Africa │ │ ├─America │ │ │ ├─Argentina │ │ │ ├─Indiana │ │ │ ├─Kentucky │ │ │ └─North_Dakota │ │ ├─Antarctica │ │ ├─Asia │ │ ├─Atlantic │ │ ├─Australia │ │ ├─Etc │ │ ├─Europe │ │ ├─Indian │ │ ├─Pacific │ │ └─SystemV │ ├─lib │ │ └─visualvm │ │ ├─etc │ │ ├─platform10 │ │ │ ├─config │ │ │ │ ├─ModuleAutoDeps │ │ │ │ └─Modules │ │ │ ├─core │ │ │ │ └─locale │ │ │ ├─docs │ │ │ ├─lib │ │ │ │ └─locale │ │ │ ├─modules │ │ │ │ ├─ext │ │ │ │ │ └─locale │ │ │ │ └─locale │ │ │ └─update_tracking │ │ ├─profiler3 │ │ │ ├─config │ │ │ │ └─Modules │ │ │ ├─lib │ │ │ │ ├─deployed │ │ │ │ │ ├─jdk15 │ │ │ │ │ │ └─windows │ │ │ │ │ └─jdk16 │ │ │ │ │ └─windows │ │ │ │ └─locale │ │ │ ├─modules │ │ │ │ ├─docs │ │ │ │ │ └─locale │ │ │ │ └─locale │ │ │ └─update_tracking │ │ └─visualvm │ │ ├─config │ │ │ └─Modules │ │ ├─core │ │ │ └─locale │ │ ├─modules │ │ │ └─locale │ │ └─update_tracking │ └─sample │ ├─javac │ │ └─processing │ │ └─src │ ├─jmx │ │ └─jmx-scandir │ │ ├─docfiles │ │ ├─nbproject │ │ ├─src │ │ │ ├─com │ │ │ │ └─sun │ │ │ │ └─jmx │ │ │ │ └─examples │ │ │ │ └─scandir │ │ │ │ └─config │ │ │ └─etc │ │ └─test │ │ └─com │ │ └─sun │ │ └─jmx │ │ └─examples │ │ └─scandir │ │ └─config │ ├─jnlp │ │ ├─corba │ │ │ ├─src │ │ │ │ ├─core │ │ │ │ └─stubs │ │ │ └─war │ │ │ ├─app │ │ │ └─WEB-INF │ │ ├─jreinstaller │ │ │ ├─build │ │ │ │ ├─linux │ │ │ │ │ ├─jreinstallers │ │ │ │ │ │ ├─j2re1_4_2 │ │ │ │ │ │ └─resources │ │ │ │ │ └─minclude │ │ │ │ ├─share │ │ │ │ │ └─jreinstallers │ │ │ │ ├─solaris │ │ │ │ │ ├─jreinstallers │ │ │ │ │ │ ├─j2re1_4_2 │ │ │ │ │ │ └─resources │ │ │ │ │ └─minclude │ │ │ │ └─win32 │ │ │ │ ├─jreinstallers │ │ │ │ │ ├─j2re1_4_2 │ │ │ │ │ └─resources │ │ │ │ └─minclude │ │ │ └─src │ │ │ ├─share │ │ │ │ └─classes │ │ │ │ └─jnlp │ │ │ │ └─sample │ │ │ │ └─JreInstaller │ │ │ │ └─resources │ │ │ └─win32 │ │ │ └─jreinstallers │ │ ├─raf │ │ │ ├─src │ │ │ └─war │ │ │ ├─app │ │ │ └─WEB-INF │ │ ├─servlet │ │ │ └─src │ │ │ └─classes │ │ │ └─jnlp │ │ │ └─sample │ │ │ ├─jardiff │ │ │ │ └─resources │ │ │ ├─servlet │ │ │ │ └─resources │ │ │ └─util │ │ └─webpad │ │ ├─src │ │ │ ├─servlet │ │ │ └─version1 │ │ └─war │ │ ├─app │ │ └─WEB-INF │ ├─nbproject │ ├─nio │ │ └─server │ ├─scripting │ │ └─scriptpad │ │ ├─nbproject │ │ └─src │ │ ├─com │ │ │ └─sun │ │ │ └─sample │ │ │ └─scriptpad │ │ ├─META-INF │ │ ├─resources │ │ └─scripts │ └─webservices │ ├─EbayClient │ │ ├─nbproject │ │ └─src │ │ └─ebay │ │ └─client │ │ └─handler │ └─EbayServer │ ├─images │ ├─nbproject │ └─src │ └─ebay │ └─server └─jre6 ├─bin │ ├─client │ └─new_plugin └─lib ├─applet ├─audio ├─cmm ├─deploy │ └─jqs │ ├─ff │ │ └─chrome │ │ └─content │ └─ie ├─ext ├─fonts ├─i386 ├─im ├─images │ └─cursors ├─management ├─security ├─servicetag └─zi ├─Africa ├─America │ ├─Argentina │ ├─Indiana │ ├─Kentucky │ └─North_Dakota ├─Antarctica ├─Asia ├─Atlantic ├─Australia ├─Etc ├─Europe ├─Indian ├─Pacific └─SystemV因为安装了jre所以有两个顶级目录jdk1.6.0_20和jre6,其中jre6目录不用看,因为 jdk1.6.0_20目录中有一个jre目录和该目录结构绝大部分相同,所以jre6只是jdk1.6.0_20目录的子集。
4、在jdk1.6.0_20目录中,只用注意两个目录bin和lib,demo等其它目录和实际开发关系不大。在bin目录中绝大多数是可执行程序,如开发用的工具java,javac等命令;当然还包括jvm相关工具,如jps,jstat等;
5、lib目录下包含jdk类库,这里有个疑问:为什么找不到Java中各个类的class文件(如String.class等)?