JDK的安装应该说是比较容易的,从java的官方网站或者在baidu里面搜一下,很容易就会找到的,把官方的网站记下来吧:http://java.sun.com/j2se/1.4.2/download.html,呵呵,令人高兴的是该页面上也有了简体中文版的连接,在以前好像是没有的,方便多了。
现在的JDK最新版本是 1.4.2 ,并且和sun的开源的开发工具NetBean一起打包了,当然也可以不下载NetBean。可惜俺对除了Window的系统为的Unix和Linux都不熟悉,每办法只能下载Window的版本了。等俺有机会一定要学学Linux或者Unix的。
下载之后的安装就不要再说了吧。安装完成之后的结果是:当然在安装位置多了一个文件夹(废话),这个文件夹里面的东西我是最近这一次安装才稍微明白了一些,就把我明白的记下来,不明白的以后再补充吧。
- bin目录:这里面就是那些常用的工具了,比如编译器javac.exe,还有java.exe(它该叫什么啊?),还有javadoc.exe好像是把源程序里面的注释什么的能够抽取出来形成文档(俺还不会用),打包的jar.exe(也还不会用),唉,不会用写这么多干吗。
- lib目录:据说这是java类库都是在这个文件夹里面,像源程序中的import语句引用的package和类主要都在这个文件夹里面。
- jre目录:java运行时环境。是SDK使用的,包括JVM、类库和其他的支持文件。
- demo目录:例子。
- src压缩文件:组成java2核心API的类的所有原代码,我第一次安装的时候还以为引用的类都是从这儿来的呢
除此之外,还在这儿安装了东西呢,以前不知道:C:/Program Files/Java/j2re 1.4.2 _04,这是java的运行时环境,我理解是程序开发部署之后要用的。
终于该写如何配置了,没想到前面就写了这么多!
如何配置JDK在网上简直太多了,随便搜一搜就有好多,一般就是这三个步骤:
- 在环境变量里面添加JDK所在的路径,俺这里是D:/j2sdk 1.4.2 /bin;
- 设置环境变量classpath为:.;D:/j2sdk 1.4.2 /lib/dt.jar;D:/j2sdk1.4.2/lib/tools.jar,注意前面那个点儿;
- 嗯?没了,我记得是三个步骤啊,好像前两步作完就可以了
呵呵,每到这时我就兴致勃勃地赶紧写一个HelloWorld编译、运行,郁闷的事儿也就来了:一般javac的时候没事儿,可一用java就不行了,就是这个著名的错误:Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld,这是我就手足无措了。有时候在上网找一找就可能找到答案,改好了下回准忘,这次俺写下来看还忘不忘了!!!
上面的第一步好说,就是让javac、java等可执行文件所在的路径,是为了让window能够搜索到他们。
第二个设置classpath我到今天才明白。程序java.exe有一个参数也是classpath,这个参数是告诉java.exe到哪里去找运行的时候用到的类。
假如写的HelloWorld.java经过编译之后形成的HelloWorld.class在D:/temp下,那么在运行时就可以写:java -classpath d:/temp HelloWorld,这样是不会有问题的(前提是没有在源程序中用package啊)。
嗯,如果这样的话每次运行的时候都这么写那岂不是很麻烦吗,所以设置环境变量classpath的效果也是一样的啊,就是告诉java.exe去classpath指定的路径里面寻找相应的类,那个点儿(.)就是告诉java.exe在当前目录中寻找了。
因为运行cmd的时候默认路径一般是:c:/documents and Settings/username,而.class文件一般不是放在这个文件夹里面的,所以就总是出错了,如果在.class文件所在的目录中执行java,这是就能够在那个点儿(.)指定的目录(当前目录)中找到类当然就不会出错了。原来如此,我真是笨得可以。
另外就是源程序中有package的时候经常出现的问题了,也是让我郁闷的利害。如果源程序中没有package,那么按照上面的方法运行是没有问题的,假如在源程序中写了这样一个语句:
package Hello;
那么运行的时候就应该这样了:
java -classpath d:/temp Hello.HelloWorld
比较一下跟没有package时有什么不同:
java -classpath d:/temp HelloWorld
当然了,假如当前目录合适的话,-classpath d:/temp是可以省去不要的。
还有就是此时编译生成的.class文件必须放在./Hello目录下,不然的话还是如下的错误:Exception in thread "main" java.lang.NoClassDefFoundError: Hello/HelloWorld,郁闷啊
解决的方法是可以手动在当前目录下建立一个文件夹Hello,然后把.class文件拷到里面去,呵呵,好像比较笨。还好有另一种方法,那就是在编译的时候使用javac的参数-d指定要把类文件放在什么地方,这样写:
javac -d d:/temp d:/temp/HelloWorld(不要这样写:javac -d d:/temp/Hello d:/temp/HelloWorld,因为这时候Hello文件夹还不存在呢)
就可以在目录d:/temp中生成一个Hello文件夹,这时候运行要是在有问题我就彻底晕了!!
好了,后面这段好像够罗嗦的,但基本上就是这样了。