随着我的《冰茶过后的喜悦--Eclipse 3_0+Lomboz 3_0+Tomcat 5_0_16配置》在http://www.javaworld.com.tw/ 上的发表后,网络中陆续出现了类似的技术文档,但是本着技术共享的原则,对那些有意无意碰触了我的奶酪的人我也就挣一只眼闭一只眼的不了了之,但是偶尔看了几篇疑似之作,对其中的不负责的言语、未经验证的行为、蜻蜓点水的空洞、缓慢的回复速度让我达到了无法忍受的地步。于是决定在BLOG建立这个贴,长期的维护下去,即为了自己从中学到更多的知识和技巧也为了和所有java爱好者一同进步。以下是在javaworld.com.tw发表的文章,现在经过重新整理后现在发上来。
北京闷热的晚上已经让我和我的爱姬(机)已经无法承受这窒息的空气。Lomboz3却还要在此时此刻火上浇油,搞了两三天了,也没个头绪。网上那些一知半解、没头没脑的文章更是让人烦恼。
放松一下!一杯加了二分之一杯冰的极冷冰茶下肚后,整个人从头凉到脚。
OK!开始吧!
1、 环境:
WIN2000pro
JDK 1.4.2_05 – Sun官方网站下载
Eclipse release 3.0 – Eclipse 官方网站下
Tomcat 5.0.16 – Jakarta官方网站下载
Lomboz 3.0 for Eclipse 3.0 – Lomboz官方网站下载,包括两个文件emf-sdo-runtime-2.0.0.zip,lomboz.3.zip。
2、 安装软件、配置环境变量(下面为我自己的环境)
JDK:
JAVA_HOME:C:\j2sdk1.4.2_05
PATH: %SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;C:\j2sdk1.4.2_05\bin;
CLASSPATH: .;C:\j2sdk1.4.2_05\lib\tools.jar;C:\j2sdk1.4.2_05\lib\dt.jar;
TOMCAT:
TOMCAT_HOME: C:\Tomcat5
Lomboz:
先将emf-sdo-runtime-2.0.0.zip解压到Eclipse3的目录下;
然后 lomboz.3.zip 解压到Eclipse3的目录下
Eclipse:
与Eclipse 2不同,插件并不是解压到Eclipse中在启动Eclipse后就可以被发现。
需要在Help—Software Updates—Manager Configuraton...中启用所安装的插件。
如下图:
启动EMF2.0.0和SDO2.0.0
工具栏上应该出现,Lomboz J2EE View的图标了。
3、 详细配置
以下配置皆在windows—Perferences中进行。
(1) Build Path
如图:01
(2) Lomboz
如图:02
(3)Lomboz—Server Definitions
Server Types选择Apache Tomcat v5.0.x
a、 Properties
如图:03
b、 Server Classpath
如图:04
c、 Project Classpath
如图:05
4、创建测试工程和页面
并在C:\Tomcat5\conf\server.xml中加入如下内容,连接到项目。
//... ...
<Context debug="0"
docBase="D:\workspace\myJSP\test"
path="/test" reloadable="true" workDir="D:\workspace\myJSP\j2src\org\apache\jsp"/>
</Host>
</Engine>
//... ...
建立工程,選擇java lomboz project后,會有創建向導,幫助你創建LOMBOZ項目。
向導其中一個步驟就是“create j2ee module”,會有一個分頁窗体,其中“web module”中應該建立project容器目錄,相當與一個web發佈目錄,我的容器目錄起名“test”;在“Targeted Servers”你的project運行所依靠的應用服務器(app server),根据目前的配置选择“Apache Tomcat v5.0.x”。
如图:06
啓動lomboz項目,你單擊工具欄上的lomboz按鈕,會有一個lomboz的工作窗体,其中有stop,run,refresh等功能。在這個窗体中選擇你的lomboz工程,右鍵會有一個彈出菜單,選擇run server就可以運行了。
启动Lomboz,然后在IE中测试页面。
如图12
终于OK了,在配置过程中几乎所有的问题都出在Server Classpath中,经过试验后,上面截图中所包含的jar文件,就可以保证你的LOMBOZ在运行过程中不会出错了。
即使出现了问题,也不要着急,看清楚提示,然后检查是否有Jar包没有加到Server Classpath路径上。
哦,心情舒爽了很多,外面夜雨也开始哗哗的下了起来。
风把带有雨的气息吹进屋内,呵呵,
可以安心、踏实的睡觉了。
另外在配置lomboz的过程中的一些问题,我是如下配置解决的:
1、关于el的问题:
在Server Classpath中导入TOMCAT_HOME\common\lib\commons-el.jar
2、在解析jsp页面时出现runtime的错误:
在Server Classpath中导入TOMCAT_HOME\common\lib\jasper-runtime.jar
3、在解析jsp页面时出现compiler的错误:
在Server Classpath中导入TOMCAT_HOME\common\lib\jasper-compiler.jar
这样一些常见的问题都可以解决。
其实Eclipse +Lomboz+Tomcat的使用中,出现比较多的挠人的问题都在配置上,所以冷静下来仔细分析问题,一般都可以解决。比如“NoClassDefFoundError”一般产生原因都是因为classpath中缺少必要的类文件。你就检查是否在server classpath中包含了该类文件所需要的jar包。
4、配置文件workDir="D:\workspace\myJSP\j2src\org\apache\jsp"中的\org\apache\jsp什么意思啊??
如果你用的是Tomcat4的话,lomboz和tomcat搭配不能生成自己工作环境,这是由tomcat4.x自身原因导致的,所以必须:
1).在Tomcat的config目录下的server.xml文件中添加以下行(具体位置请参见server.xml相关的文献):
<Context path="/TestJsp" docBase="D:\DebugJsp\debugJsp"workDir="D:\DebugJsp\j2src\org\apache\jsp">
其中,path表示Web应用的URL名字;docBase表示web应用的物理位置;workDir表示jsp所对应的java文件产生的位置,必须创建org\apache\jsp这样的目录结构和名称。
2).根据org\apache\jsp在对应的j2src目录下创建相对应的子目录结构,同时把j2src设置为工程的source目录。
因此,你没有在j2src设立org.apache.jsp目录结构,所以在编译时会报,找不到package org.apache.jsp。
但是Tomcat5x后这个问题已经更正了,不需要再设立org.apache.jsp的目录结构,就可以正确编译,如果你打开j2src目录会发现已经自动创建了org.apache.jsp。所以Tomcat5下只要声明:
workDir="D:\workspace\myJSP\j2src“就可以了。
如图:09
如果你一定要加上目录结构像这样:
workDir="D:\workspace\myJSP\j2src\org\apache\jsp"
你会发现tomcat5在编译时,就会默认把workDir作为工程编译目录,仍会在目录最末层创建org.apache.jsp的package结构。
如图:10
5、使用哪个Tomcat版本的问题
另外关于使用哪个Tomcat版本的问题,我个人觉得只要是Lomboz官方发布的版本中支持的Tomcat版本都应该可以配置成功。所以,那种说换个版本就成功了,可能在出问题的tomcat版本配置上还是有一定问题。
6、Lomboz3不支持Tomcat5.0.27吗?
Lomboz3不支持Tomcat5.0.27在国外论坛已经能找到问题所在了。是Lomboz3针对Tomcat5x的支持文件有一个莫名错误。
在%ECLIPSE_HOME%\plugins\com.objectlearn.jdt.j2ee_3.0.1\servers\tomcat50x.server文件中,查找“-Djava.endorsed.dirs”字符串,正确的设置应该是-Djava.endorsed.dirs="${serverRootDirectory}/common/endorsed",要删去一个莫名路径。一共要修改两处。修改完了,Tomcat就能顺利起来了。
Tomcat5.0.28好像没有这个问题吧,我用的5.0.28是没问题的,以前用Tomcat5.0.27确实存在这个问题,照Lomboz网站上所说的方法修改后Tomcat确实能启动了,但是我发现修改那个文件之后会产生新的问题,所以建议用Tomcat5.0.27的朋友们不要在Lomboz中启动Tomcat,直接把发布方式改成写xml文件的方式进行调试,或者干脆换个版本的Tomcat。
7、lomboz project中关于servlet如何自动加到web.xml中
关于Servlet的mapping问题,目前我也是手工加入的。如果你能找到好的办法也请通知我。
8、servlet如何自动生成在web-inf/classes目录下?
关于Servlet的保存目录,如果使用lomboz生成的web project默认servlet保存在bin目录下。为了方便调试和发布,正常情况下应该在classes目录下,需要如下设置:
在project属性中,按图片中所示设置。
这样servlet编译后的class文件就会按照你的package结构自动放置在classes下面了。
如图:11
9、怎么解决lomboz从.jsp文件转.java(servlet)文件时候中文乱码的问题
关键是jsp文件中要设定编码格式。
<%@ page language="java" contentType="text/html;charset=gb2312" %>
下面的gif图片,说明了当jsp文件中加入上面的标签后,原来在servlet中乱码的中文现在可以正确的显示了,观察一下servlet发现,增加了
response.setContentType("text/html;charset=gb2312");
但该句对代码中的中文是否是乱码,并没有起到关键作用,只是告诉servlet,要将代码中的中文以指定的编码格式输出(是为了执行结果而指定的中文编码格式)。导致servlet代码中的中文可以正确显示的原因,在于lomboz在将.jsp文件解析为.java时,因为发现了<%@ page language="java" contentType="text/html;charset=gb2312" %>这个标签,所以将.jsp编译为.java时,对其中的中文字符做了相应的编码转化。所以一句话,保证servlet代码中不出现乱码,关键在jsp文件中。
如图:
(1)没有设置编码格式的jsp文件
(2)转成servlet后,代码中出现中文乱码的问题
(3)如果在jsp文件中指定编码
(4)则转servlet后,中文转化正确