J2EE开发环境搭建(1)——安装JDK、Tomcat、Eclipse
1:背景
进公司用SSH(Struts,spring和hibernate)开发已经有两个月了,但由于一 直要么只负责表示层的开发,要么只负责业务层 的开发,要么只负责数据库底层的开发,就这样,一个毫无JAVA程序开发和Web开发背景的我,由于有点面向对象开发的基础,也能够协助经理将一个项目给 像模像样地完成了。现在项目完成了,我反而心里觉得空落落的,因为虽然自己涉及过web开发的方方面面,但至今不会独自进行项目的开发,连 tomcat,eclipse,jdk……都没有安装过,也从没安装过,进公司之前,别人就已经替我安装好了。于是趁着这个端午节3天的假日,强忍住不出 去玩,一个人呆在家里,打算将那个完成的项目全部迁移到我的笔记本上。虽然从没安装过开发和运行环境,但做项目这么久,也知道需要安装哪些程序或者文件包 ——jdk,tomcat,eclipse,mysql,navicate,另加三个框架——struts,spring,hibernate。废话少 说,下面进入主题:
2:JDK的安装及其系统环境变量的设置
我直接将公司的jdk安装文件给拷贝回来了,一共是70M左右,版本是jdk 1.6。我也不管三七二十一,一口气先后安装了jdk,eclipse和 tomcat,然后将项目导入eclise,结果一打开,里面简直惨不忍睹,jsp文件似乎并不被识别,而.java文件里面到处都是错。于是上网求助, 查了大半天,似乎最后才明白了一点:2.1 JDK的卸载
由于我一口气将这三个程序都安装了,但后来得知这些都是需要配置的,所以我就又将它们全都给卸了。 好,问题来了!我在卸载JDK的时候,在“开始”——“ 程序”菜单中没有看到JDK,所以就认为也许JDK没有安装到我的电脑上,于是就将安装JDK的那个文件夹里的内容全都给删了,到最后只有jre那个目录 无法删除。OK,灾难由此开始,我的无知导致我的端午节的第一天一整天都在为我的这个过错进行纠正!问题出在:我第二次双击jdkSetup.exe安装 文件时,安装的画面总是一闪而过,然后报出这样一条提醒的语句:你的系统中已经安装了JDK程序,是否要继续重新安装?我点“确定”,但没过多久,又回到 了刚才的那个提醒画面中来。于是我就打开“开始”——“控制面板”——“添加或删除程序”,在里面找到JAVA UPDATE 和JAVA DEVELOPMENT这两个程序,我点击“删除”,但最后总提示说:你的安装程序有问题。无论我怎样删,就是删不掉。于是又上网寻求答案,百度谷歌了好 久,看了好多解决方案,试了之后都不行,例如:下载一个更高版本的JDK,安装之后将系统中已经安装的JDK覆盖掉;又如:打开注册表,找到 JAVASoftware和SUN,将这两个注册文件都给删除掉;再如:下载一个强力卸载工具,强制将JDK卸载掉……就这样从上午9点试到下午2点钟, 都还没搞定,连宝贵的午餐时间都给浪费掉了!但我就是不甘心,后来见一高手说:为之。于 是我就照着此法去做,一直删了2个多小时,才终于全部删除干净,没想到安装一个JDK,在注册表中竟然注册了这么多信息!好了,既然都删掉了,我就开始安 装了,但是结果让我很失望:系统竟然还是提示说我的电脑上已经安装了JDK!这简直让我无语!我想:注册表里的与JDK有关的信息都已经被我删除掉了,那 么安装程序又是从哪里又找到JDK的蛛丝马迹的呢?难道是注册表里的信息还没删除干净?于是我又打开注册表,又查找刚才那一个字眼,没想到这次又查找到了 若干,于是又一一删除。删除完了,为了确认这次是不是已经全部删除干净,我重启了电脑并打开注册表,继续查找,结果这一次再也没找到,于是我打开“开始” ——“控制面板”——“添加或删除程序”,好了,这一次再也没有那个JAVA UPDATE和JAVA DEVELOPMENT的程序了。于是我再次双击JDK的安装程序,好了这次终于可以正常安装了,总算是迈出第一步了!一 般而言,到了这一步,基本都能够重新安装jdk了,但如果还是提示“jdk已经安装,是否重新安装”之类的警告,那还有最后一招必杀招——将这个jdk在 别人的windows操作系统上安装一下,例如安装在e:\jdk\目录中,然后直接将该目录中的全部文件拷贝到本机中即可,例如也拷贝到本机的e: \jdk\目录下,这就相当于安装了一个绿色版的jdk。我试了试,这样安装一点问题都没有,只需设置一下环境变量即可(设置方法见下文)。
这里还要提醒大家的是:按照上面的方法还是并不一定就行的,如果其他程序中已经关联上了JDK,比如eclipse或tomcat,那么可能还需要将这些程序也都删除或卸载掉才行!
2.2 JDK的环境变量设置
JDK安装好了之后,必须设置其环境变量,这样也方便以后程序的编译和运行!这在我的另一篇文章有详细说明,也是引自一高手的教导:http://www.cnblogs.com/pricks/archive/2009/05/28/1491346.html但是为了大家阅读方便,我这里再贴出来:
首先右键点我的电脑。打开属性。然后选择“高级”里面的“环境变量”,在新的打开界面中的系统变量里需要设置三个属性“java_home”、“path”、
“classpath”,其中在没安装过jdk的环境下,path属性是本来存在的。而java_home和classpath是不存在的。
首先点“新建”,然后在变量名写上java_home,顾名其意该变量的含义就是java的安装路径,呵呵,然后在变量值写入刚才安装的路径
“E:\Java\jdk1.6.0_02”(jdk1.6.0_02是jdk安装后的目录,里面至少包含3个目录:bin、lib和jre。本人一般是将jdk在虚拟机上
安装一遍,得到安装后的目录jdk1.6.0_02,然后将该目录拷贝到E:\Java目录中,于是便形成现在的这个目录结构);其次在系统变量里面
找到path,然后点编辑,path变量的含义就是系统在任何路径下都可以识别。打开该变量时,
会发现其“变量值”后面的文本框中已经有了内容,我们不要删除这些内容,而是按“End”,定位到该文本框的末尾,如果末尾有一个分号“;”,
就直接添加JAVA命令所在的路径,如果没有分号,则需要添加一个分号后再添加JAVA命令的路径——java命令的路径是
“%java_home%\bin;%java_home%\jre\bin”(其中“%java_home%”的意思为刚才设置java_home的值),也可以直接写上“E:\Java\jdk1.6.0_02”;
最后再点“新建”,然后在变量名上写classpath,该变量的含义是为java加载类(class or lib)路径,只有类在classpath中,java命令才能识别,
其值为“.;%java_home%\lib\dt.jar;%java_home%\lib\tools.jar (要加.表示当前路径)”,与“%java_home%”有相同意思。
以上三个变量设置完毕,则按“确定”直至属性窗口消失,下来是验证看看安装是否成功。先打开“开始”->“运行”,打入“cmd”,进入dos系统界面。
然后打“java -version”,如果安装成功。系统会显示java的版本信息。另外安装java时,安装jdk 和 jre要有两个目录,安装时都选择在同一目录会
出现bin和lib文件覆盖现象,从而出现无lib\tools.jar文件的现象,到时即使正确设置了环境变量后javac也不可用!!因此安装jdk后一定要看下在
jdk\lib下是否有tools.jar文件,有的话按照上面的方法设置环境变量就ok了
2.3 写一个经典的JAVA程序——Hello World
这个程序最然简单,但很经典,之所以经典,自有其道理,诸君请看:
首先,开启文本编辑器如txt,新建一个文本文件,写入如下代码:
public class HelloWorld{
public static void main(String args[]) {
System.out.println("Hello World!");
}
}
然后关闭编辑器,重命名本文件为HelloWorld.java。注意:如果文件里的类名为helloworldt,则本文件名也要改为helloworld.java,即文件名必须与类名相同,大小写也要必须一样!
然后,“开始”——“运行”或者直接安装Win + R,打开命令行,输入cmd,点击确定或回车后,就打开了命令符窗口。如果刚才的HelloWorld.java
文件保存在f:\中,则在该窗口中输入f:,然后回车,光标处为:F:\>。这时,输入javac
HelloWorld.java,然后回车,再输入java HelloWorld,然后回车,Ok,如果一切正常的话,窗口中会显示Hello
World!这一行文字;否则,肯定会出错,下面便是常见的几种错误类型及其解决方案:
* 错误1:'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。(javac: Command not found)
产生的原因是没有设置好环境变量path。Win98下在autoexce.bat中加入path=%path%;c:jdk1.2
in,Win2000下则控制面板->系统->高级->环境变量->系统变量...看到了?双击Path,在后面加上
c:jdk1.2in。当然我们假设JDK安装在了c:jdk1.2目录下(有点唐僧了?)...好像还要重启系统才起作用...(//知道了!//西
红柿)好,再试试!javac HelloWorld。
* 错误2:HelloWorld is an invalid option or argument.
拜托,给点专业精神,java的源程序是一定要存成.java文件的,而且编译时要写全.java呀。OK, javac HelloWorld.java (这回总该成了吧?)
* 错误3:HelloWorld.java:1: Public class helloworld must be defined in a file called "HelloWorld.java". public class helloworld{ ^
这个问题嘛,是因为你的类的名字与文件的名字不一致。(谁说的,明明看到人家都有这样写的 ( )
OK,准确地说,一个Java源程序中可以定义多个类,但是,具有public属性的类只能有一个,而且要与文件名相一致。还有,main方法一定要放在
这个public的类之中,这样才能java(运行)这个类。另外一点是Java语言里面是严格区分大小写的,初学者要注意呀。像上例中
helloworld 与 HelloWorld 就认为是不一样,因而...oh... 好,改好了,嘻嘻... javac
HelloWorld.java...(咦,怎么什么也没有呀?)//faint
这就是编译通过了!看看是不是多了一个HelloWorld.class ?(hehe..按书上教的:) java HelloWorld (!!
这个我知道,不是java HelloWorld.class哟)
* 错误4:Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld
呵呵,这个嘛,就是著名的类路径(classpath)问题啦。实际上,类路径是在编译过程就涉及的Java中的概念。classpath就是指明去哪
里找用到的类,就这么简单。由于我们的HelloWorld没用到其它的(非java.lang包中的)类,所以编译时没遇到这个问题。运行时呢,就要指
明你的类在哪里了。解决方法嘛,可以用下面的命令运行:
java -classpath . HelloWorld“.”就代表当前目录。当然这样做有点麻烦(是“太麻烦”!),我们可以在环境变量中设置默认的classpath。方法就照上述设置path那样。将classpath设为:
classpath=.;c:jdk1.2libdt.jar;c:jdk1.2lib ools.jar 后面的两个建议也设上,以后开发用的着。java -classpath . HelloWorld(再不出来我就不学java了)
* 错误5:Exception in thread "main" java.lang.NoSuchMethodError: main
(//咣当)别,坚持住。看看你的代码,问题出在main方法的定义上,写对地方了吗, 是这样写的吗:
public static void main(String args[]) { //一个字都不要差,先别问为什么了... 对,包括大小写! java -classpath . HelloWorld (听天由命了!)
Hello World!
(faint!终于...)欢迎来到Java世界!所以说,无法运行HelloWorld 真的并不是一个“最简单的问题”。
3 tomcat的安装及其环境变量的设置
第一步:去tomcat官方网站上下载一个压缩文件,解压下来即可,不需安装。
第二步:接下来就是设置环境变量了,CATALINA_HOME:c:\tomcat
CATALINA_BASE:c:\tomcat
TOMCAT_HOME: c:\tomcat
如果是第一次设置tomcat的环境变量,上面的这三个变量都是没有的,因此都需要“新建”,以第一个变量为例:点击“新建”,输入变量名为CATALINA_HOME,输入变量值为c:\tomcat。
然后修改环境变量中的classpath(这一步与上面jdk相关联,这里的classpath变量便是上面在安装jdk时所创建的环境变量):把
tomat安装目录下的common\lib下的servlet.jar追加到classpath中去,修改后的classpath如
下:classpath=.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib
\tools.jar;%CATALINA_HOME%\common\lib\servlet-api.jar(注意:末尾最好别加分号) 注意:双击打开classpath变量时,其值为jdk的相关值,即:
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar,现在要追加tomcat的该变量值,需要先
在末尾添加一个分号(如果末尾有分号,就不必添加了),然后再添加tomcat的值:
%CATALINA_HOME%\common\lib\servlet-api.jar。
!】
接着可以启动tomcat:在IE中访问http://localhost:8080,如果看到tomcat的欢迎页面的话说明安装成功了。
再接着找到tomcat目录下的conf文件夹,用editplus打开server.xml。找到<Connector
port="8080" maxHttpHeaderSize="8192" maxThreads="150"
minSpareThreads="25" maxSpareThreads="75" enableLookups="false"
redirectPort="8443" acceptCount="100" connectionTimeout="20000"
disableUploadTimeout="true"
/>把端口8080改为80(不过一般情况下不要改)。在最后添加URIEncoding="utf-8".重新启动服务器。输入http:
//localhost,如果成 功就可以看到tomcat的欢迎页面。
第三步:建立自己的jsp app目录
1.到Tomcat的安装目录的webapps目录,可以看到ROOT,examples, tomcat-docs之类Tomcat自带的的目录;
2.在webapps目录下新建一个目录,起名叫myapp;
3.myapp下新建一个目录WEB-INF,注意,目录名称是区分大小写的;
4.WEB-INF下新建一个文件web.xml,内容如下:
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app <web-app> <display-name>My Web Application</display-name>
<description> A application for test. </description> </web-app> |
5.在myapp下新建一个测试的jsp页面,文件名为index.jsp,文件内容如下:
<html>
<body>
<center>
Now time is: <%=new java.util.Date()%> </center> </body> </html> |
6.重启Tomcat
7.打开浏览器,输入http://localhost:8080/myapp/index.jsp 看到当前时间的话说明就成功了。
8.如果在这一步出现如下错误:
exception
javax.servlet.ServletException: javax.servlet.ServletException: java.lang.NoClassDefFoundError: javax/el/ELResolver
那
就检查一下Tomcat/lib下是否已经有el-api.jar
el-ri.jar两个jar文件,没有则拷贝到此目录下。重启Eclipse测试;同时,如果机器上已经有Eclipse,又安装
MyEclipse,MyEclipse会自动查找jre,他首先检测到的是C:\Program
Files\Java(jdk安装目录)中的jre,而不是C:\Program
Files\Java\jdk1.5.0_06中的jre,原先的Eclipse的jre也随之改动(解决方法(Eclipse为例,MyEclipse
类似)window->preferences->Java->Installed
JRES->Edit->更改jre home为C:\Program
Files\Java\jdk1.5.0_06);如果还不行,就将el-api.jar包也添加到classpath环境变量中去。如
果这样还不行,就再参考一下这一段:原 因:在Eclipse的Windows -->> Preference
-->>Tomcat 设置Tomcat Home路径后,又在Tomcat的Advanced选中设置了相同的Tomcat
Base路径,关键一步是Advanced下有项:Add Java projects to tomcat
classpath,勾上所选项目之后,才可以正常的引起javax.servlet.ServletException:
java.lang.NoClassDefFoundError: javax/el/ELResolver
解决办法:从哪里勾上的,就从哪里勾回去,把Add Java projects to tomcat classpath勾掉。如
果上面的方法都不行,那就只好出一个必杀招了——卸载安装好的jdk、tomcat和eclipse,并清除jdk和tomcat的环境变量,然后重新安
装一遍jdk、tomcat和eclipse,并设置jdk和tomcat的环境变量。可能是我这个人比较搓,我每次将我在公司做好的项目拷回来研究时,
总是会出现这样的错误,并且每次无论怎样搞,tomcat依然会报“java.lang.NoClassDefFoundError: javax/el/ELResolver”的错误,最后终于恨下心来,专门花了一个星期的时间来研究解决之道,最后才想出了这个“先毁灭再重建”的不是办法的办法,并且每一次都屡试不爽!
4:配置jdk
必须在eclipse中配置安装的jdk,否则项目中会报很多错误。配置步骤如下:
首先假设刚才的jdk安装目录是D:\j2se1.5.0\jdk1.5.0;
D:\j2se1.5.0\jdk1.5.0\jre\lib\目录中添加几个tomcat\lib\目录中的 .jar 文件——在上图中,选中jre列表中的第二个jre(即列表的第二行),点击“Edit...”按钮,如下图所示:
点击该界面上的“Add External JARs...”按钮,在弹出的文件浏览对话框中选择刚才安装的tomcat目录下的 lib\
目录中的servlet.jar、el-api.jar、jsper.jar和jsp-api.jar这四个文件,将这四个文件添加到项目中来。如果不添
加,而项目中又引用到了“javax.servlet.http.*”,则eclipse会报出“inport javax.servlet.http
cannot be resolved”的错误。
5 第四步——建立自己的Servlet
紧接上面第三节中的第三步“建立自己的jsp app目录 ”,接下来写入你的第一个Servlet:在你新建的Application myapp/WEB-INF/classes/test目录下新建HelloWorld.java
package test; import java.io.*;
import javax.servlet.*; import javax.servlet.http.*; public class HelloWorld extends HttpServlet { public void doGet(HttpServletRequest request,HttpServletResponse response)th rows ServletException,IOException { response.setContentType("text/html"); PrintWriter out = response.getWriter(); out.println("<html><head><title>"); out.println("This is my first Servlet"); out.println("</title></head><body>"); out.println("<h1>Hello,World!</h1>"); out.println("</body></html>"); } } |
然后照样用javac HelloWorld.java来编译这个文件,如果出现无法import javax.servlet.*
那么就是应该把C:\Tomcat\common\lib里面的servlet-api.jar文件拷贝到C:\JDK\jre\lib\ext中,再次编译,就没有问题了!
然后在Tomcat目录里面的C:\Tomcat\webapps\myapp里面按如下的文件结构:
myapp\index.jsp
myapp\WEB-INF\classes\test\HelloWorld.class(把上面生成的HelloWorld.class文件放在这个里面)
然后在浏览器中输入http://localhost:8080/myapp/HelloWorld,于是Server众望所归的报错了:Error 404--Not Found
怎么回事呢?
Servlet必须使用C:\Tomcat\webapps\myapp\WEB-INF这个目录下面的web.xml文件进行注册,
用EditPlus打开这个web.xml文件,
在<web-app></web-app>添加下面这段程序:
<servlet>
<servlet-name>HelloWorld</servlet-name> <servlet-class>test.HelloWorld</servlet-class> </servlet> <servlet-mapping> <servlet-name>HelloWorld</servlet-name> <url-pattern>/HelloWorld</url-pattern> </servlet-mapping> |
为什么呢? 因为这样的结构
<servlet-name>HelloWorld</servlet-name>
<servlet-class>test.HelloWorld</servlet-class>//类的路径
</servlet>
表示指定包含的servlet类,而以下的结构
<servlet-name>HelloWorld</servlet-name>
<url-pattern>/HelloWorld</url-pattern>
</servlet-mapping>
表示指定HelloServlet应当映射到哪一种URL模式。在修改web.xml完毕过后,重新启动Server,然后再输入http://localhost:8080/myapp/HelloWorld,,那么偌大一个Hello,World!等着你呢,恭喜你!
第五步:建立自己java Bean
1. 在你新建的Application myapp/WEB-INF/classes/test目录下新建TestBean.java
package test;
public class TestBean { private String name =null; public TestBean(String nameInit){ this.name = nameInit; } public void setName(String newName){ this.name=newName; } public String getName(){ return this.name; } } |
然后照样用javac TestBean.java来编译这个文件。
2.然后在你新建的应用程序目录myapp下新建一个新的jsp文件:testBean.jsp
<%@ page import="test.TestBean" %>
<html> <head> <title>Test Bean</title> </head> <body> <center> <% TestBean testBean = new TestBean("Http://yexin218.cublog.cn"); %> Java Bean Test: The author's blog address is<%=testBean.getName()%> </center> </body> </html> |
好了,确定各个文件的位置:
myapp\index.jsp
myapp\testBean.jsp myapp\WEB-INF\web.xml myapp\WEB-INF\classes\test\HelloWorld.class myapp\WEB-INF\classes\test\TestBean.class |
3.重启Tomcat如果需要的话,在浏览器输入:http://localhost:8080/myapp/testBean.jsp 幸运的话就会看到:
Java Bean Test: The author's blog address isHttp://yexin218.cublog.cn
这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。
第六步:配置虚拟目录
打开 Tomcat6.0\conf\server.xml 文件,在 <Host> 和 </Host> 之间加入
<Context path="/myapp" docBase="D:\myapp" debug="0" reloadable="true" crossContext="true" />