Chinaunix首页 | 论坛 | 博客
  • 博客访问: 640201
  • 博文数量: 263
  • 博客积分: 6000
  • 博客等级: 准将
  • 技术积分: 2555
  • 用 户 组: 普通用户
  • 注册时间: 2008-02-26 11:20
文章分类

全部博文(263)

文章存档

2011年(10)

2010年(19)

2009年(170)

2008年(64)

我的朋友

分类: Java

2009-06-14 18:58:45

1:背景

  进公司用SSH(Struts,spring和hibernate)开发已经有两个月了,但由于一直要么只负责表示层的开发,要么只负责业务层的开发,要么只负责数据库底层的开发,就这样,一个毫无JAVA程序开发和Web开发背景的我,由于有点面向对象开发的基础,也能够协助经理将一个项目给像模像样地完成了。现在项目完成了,我反而心里觉得空落落的,因为虽然自己涉及过web开发的方方面面,但至今不会独自进行项目的开发,连tomcat,eclipse,jdk……都没有安装过,也从没安装过,进公司之前,别人就已经替我安装好了。于是趁着这个端午节3天的假日,强忍住不出去玩,一个人呆在家里,打算将那个完成的项目全部迁移到我的笔记本上。虽然从没安装过开发和运行环境,但做项目这么久,也知道需要安装哪些程序或者文件包——jdk,tomcat,eclipse,mysql,nacicate,另加三个框架——struts,spring,hibernate。废话少说,下面进入主题:

  2:JDK的安装及其系统环境变量的设置

   我直接将公司的jdk安装文件给拷贝回来了,一共是70M左右,不知道是第几版本的。我也不管三七二十一,一口气先后安装了jdk,eclipse和tomcat,然后将项目导入eclise,结果一打开,里面简直惨不忍睹,jsp文件似乎并不被识别,而.java文件里面到处都是错。于是上网求助,查了大半天,似乎最后才明白了一点:tomcat必须在elipse之前安装,在jdk安装完成之后再安装而jdk和tomcat安装完了之后都必须设置所谓的环境变量,并且还要在eclipse中进行配置。而我,却只是将它们分别安装了一下,压根儿就没有进行任何配置,这就造成了它们三之间彼此不认识,所以eclipse打开的项目自然到处都是错误。呵呵,这些都是最基本的常识,地球人都知道,但我是个新手,从来不知道原来安装程序后还要对其进行配置,还要与其他程序进行关联!我冒着被贻笑大方的巨大风险,将这点列在这里,是希望后来的新手别像我这样,犯如此低级的错误。

  2.1 JDK的卸载

   由于我一口气将这三个程序都安装了,但后来得知这些都是需要配置的,所以我就又将它们全都给卸了。好,问题来了!我在卸载JDK的时候,在“开始”——“程序”菜单中没有看到JDK,所以就认为也许JDK没有安装到我的电脑上,于是就将安装JDK的那个文件夹里的内容全都给删了,到最后只有jre那个目录无法删除。OK,灾难由此开始,我的无知导致我的端午节的第一天一整天都在为我的这个过错进行纠正!问题出在:我第二次双击jdkSetup.exe安装文件时,安装的画面总是一闪而过,然后报出这样一条提醒的语句:你的系统中已经安装了JDK程序,是否要继续重新安装?我点“确定”,但没过多久,又回到了刚才的那个提醒画面中来。于是我就打开“开始”——“控制面板”——“添加或删除程序”,在里面找到JAVA UPDATE 和JAVA DEVELOPMENT这两个程序,我点击“删除”,但最后总提示说:你的安装程序有问题。无论我怎样删,就是删不掉。于是又上网寻求答案,百度谷歌了好久,看了好多解决方案,试了之后都不行,例如:下载一个更高版本的JDK,安装之后将系统中已经安装的JDK覆盖掉;又如:打开注册表,找到JAVASoftware和SUN,将这两个注册文件都给删除掉;再如:下载一个强力卸载工具,强制将JDK卸载掉……就这样从上午9点试到下午2点钟,都还没搞定,连宝贵的午餐时间都给浪费掉了!但我就是不甘心,后来见一高手说:在注册表里,按Ctrl + F,分别输入SUN,sun,Java,java,jre,JAVA,jdk,JDK,每查找到一个注册信息,如果是左侧栏的注册文件夹,就将该文件夹直接删除;如果是右侧的键值表,就选中右击——删除掉,每一个字段都必须反复地查找并删除,直到最后再也查找不到为之。于是我就照着此法去做,一直删了2个多小时,才终于全部删除干净,没想到安装一个JDK,在注册表中竟然注册了这么多信息!好了,既然都删掉了,我就开始安装了,但是结果让我很失望:系统竟然还是提示说我的电脑上已经安装了JDK!这简直让我无语!我想:注册表里的与JDK有关的信息都已经被我删除掉了,那么安装程序又是从哪里又找到JDK的蛛丝马迹的呢?难道是注册表里的信息还没删除干净?于是我又打开注册表,又查找刚才那一个字眼,没想到这次又查找到了若干,于是又一一删除。删除完了,为了确认这次是不是已经全部删除干净,我重启了电脑并打开注册表,继续查找,结果这一次再也没找到,于是我打开“开始”——“控制面板”——“添加或删除程序”,好了,这一次再也没有那个JAVA UPDATE和JAVA DEVELOPMENT的程序了。于是我再次双击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”;
其次在系统变量里面找到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;%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,点击确定或回车后,就打开了命令符窗口。如果刚才的Test.java

       文件保存在f:\中,则在该窗口中输入f:,然后回车,光标处为:F:\>。这时,输入javac Test.java,然后回车,再输入java Test,然后回车,

Ok,如果一切正常的话,窗口中会显示This is a test program.这一行文字;否则,肯定会出错,下面便是常见的几种错误类型及其解决方案:

       * 错误1:

  'javac' 不是内部或外部命令,也不是可运行的程序或批处理文件。
  (javac: Command not found)

  产生的原因是没有设置好环境变量path。Win98下在autoexce.bat中加入path=%path%;c:jdk1.2in,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官方网站上下载一个压缩文件,解压下来即可,不需安装。

   第二步:接下来就是设置环境变量了注意:tomcat的环境变量与jdk相关联,因此必须先安装好jdk并设置好其环境变量后,再开始安装tomcat。

   在我的电脑->属性->高级->环境变量->系统变量中添加以下环境变量(假定你的tomcat安装在e:\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中可能没有common这个文件夹了。所以servlet-api.jar应该的路径为

%CATALINA_HOME%\lib\servlet-api.jar;请根据自己的情况自己修改

  接着可以启动tomcat:在IE中访问,如果看到tomcat的欢迎页面的话说明安装成功了。

  再接着找到tomcat目录下的conf文件夹,用editplus打开server.xml。找到把端口8080改为80。在最后添加URIEncoding="utf-8".重新启动服务器。输入,如果成功就可以看到tomcat的欢迎页面。

 

   第三步:建立自己的jsp app目录 
1.Tomcat的安装目录的webapps目录,可以看到ROOTexamples, 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
PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"">

<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.打开浏览器,输入
看到当前时间的话说明就成功了。

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环境变量中去。


第四步:建立自己的Servlet:
写入你的第一个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(""</SPAN><SPAN style="COLOR: #0000cc">)</SPAN><SPAN style="COLOR: #0000cc">;</SPAN><BR>    out<SPAN style="COLOR: #0000cc">.</SPAN><SPAN style="COLOR: #ff0000">println</SPAN><SPAN style="COLOR: #0000cc">(</SPAN><SPAN style="COLOR: #ff00ff">"This is my first Servlet"</SPAN><SPAN style="COLOR: #0000cc">)</SPAN><SPAN style="COLOR: #0000cc">;</SPAN><BR>    out<SPAN style="COLOR: #0000cc">.</SPAN><SPAN style="COLOR: #ff0000">println</SPAN><SPAN style="COLOR: #0000cc">(</SPAN><SPAN style="COLOR: #ff00ff">"");
    out.println("

Hello,World!

");
    out.println(" ");
   
   }
   }

然后照样用javac HelloWorld.java来编译这个文件,如果出现无法import javax.servl
et.*
   那么就是应该把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文件放在这个
里面)
 然后在浏览器中输入
,于是Server众望所归的报错了:Error 404--Not Found
 怎么回事呢?
Servlet必须使用C:\Tomcat\webapps\myapp\WEB-INF这个目录下面的web.xml文件进行注册,
用EditPlus打开这个web.xml文件,
添加下面这段程序:

<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>

 为什么呢?
 因为 这样的结构
  
   HelloWorld
   test.HelloWorld//类的路径
  

表示指定包含的servlet类.
而以下的结构
  
     HelloWorld
    /HelloWorld
  

 表示指定HelloServlet应当映射到哪一种URL模式。

在修改web.xml完毕过后,重新启动Server,然后再输入,,那么偌大一个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()%>


好了,确定各个文件的位置:

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如果需要的话,在浏览器输入: 幸运的话就会看到:

Java Bean Test: The author's blog address isHttp://yexin218.cublog.cn

这样就完成了整个Tomcat下的jsp、servlet和javabean的配置。

第六步:配置虚拟目录

打开 Tomcat6.0\conf\server.xml 文件,在 之间加入

<Context path="/myapp" docBase="D:\myapp" debug="0" reloadable="true" crossContext="true" />

阅读(897) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~