您的位置:首页 > 运维架构 > Tomcat

Passbook对应系统配置 Eclipse Tomcat配置JavaWeb项目部署 Sysdeo Eclipse Tomcat Launcher plugin

2014-05-14 16:25 681 查看
在 Eclipse J2EE Juno+Tomcat 6 用Tomcat Plugin配置Tomcat 应用时,不想Copy一堆 jar文件到应用的lib目录中,应该可以用Activate DevLoader在运行时载入需要Load的Jar文件。

        但是一不小心就容易出现 DevLoader的ClassNoFound错误,看了Tomcat Plugin的 readmeDevLoader.html后,按以下步骤试了一下,解决了。

首先,我假设你已经下载了Tomcat Plugin,并已加入到Eclipse的Plugin中去了。

        1. 将Tomcat Plugin下的DevLoader.zip Copy到 Tomcat_Home/lib下,将文件名改为:DevLoader.jar;

 ---Tomcat Plugin 的 readmeDevLoader.html中说要将DevLoader.zip解压到 TOMCAT_HOME/server/classes 中,但是在Tomcat 6中只有一个lib目录。而我知道jar文件实际上采用的就是zip算法,而tomcat会将lib目录下的所有jar文件加载并在其中寻找符合条件的class调用,所以这个步骤只要将DevLoader.zip改名为DevLoader.jar就可以了)   

       2. 在Eclipse的Tomcat项目属性中,Tomcat->DevLoader Classpath选项卡中勾选 Activate DevLoader, 然后再勾选你需要加载的项目的java代码编译路径,按Apply就OK了。

Sysdeo的Tomcat Plugin是Eclipse下面一款Tomcat的插件,为Eclipse提供了集成的Tomcat下Web项目开发的环境。 

Devloader是这款插件附带的一个功能,能够使Tomcat在启动的时候动态的加载任意位置的library文件到当前项目的classpath中。作为还没有正式deploy的项目,这项功能非常实用,节省了手工拷库文件到项目目录下的lib的过程。 

Sysdeo Eclipse Tomcat Launcher plugin 是做J2EE开发的时候经常用到的一款插件,可以在Eclipse中启动Tomcat,同时可以把Tomcat进程绑定到Eclipse
Java Debugger中,这样可以在运行时进行一些debug操作,当修改或者新增、删除了一些java文件以后,Tomcat Context会自动重新load,这样不用每次做了修改都需要重启Tomcat。

在使用这款插件的时候,往往很多人会遇到这样的一个异常:ClassNotFoundException: org.apache.catalina.loader.DevLoader,很多人解决的办法往往是禁用DevLoader功能。其实DevLoader提供的功能是很有用的,它实现和扩展了WebappLoader。我们知道,默认情况下,我们需要把classes和jar文件都放到web应用所在的WEB-INF/classes和WEB-INF/lib下,但是在实际的开发环境下,往往需要引用到外部的classes和jar文件,比如另外一个项目中的classes,这个时候如果在没有DevLoader的情况下我们需要把这些classes和jar文件拷贝到web应用所在的WEB-INF下的相应目录中,而如果启用了DevLoader,则没有了上述的限制,可以加载项目用到的所有classpath中的classes和jar。

启用DevLoader的过程如下: 

1. 在项目Properties(属性)中,找到Tomcat项,选中“Activate DevLoader”以及想要加入classpath的库文件。

2. 复制DevLoader.zip到tomcat安装目录下的lib中,如"C:/apache-tomcat-6.0.16/lib/",并且将后缀名改为.jar 

3. 在Eclipse菜单栏上重启Tomcat,控制台信息应该成功显示DevLoader已经被加载。
================================================
Tomcat目录下conf/server.xml 配置

 <Context path="/Passbook" reloadable="true" docBase="/Users/user/Documents/passo/PassoWebApp/src/main/webapp">
   <Loader className="org.apache.catalina.loader.DevLoader" reloadable="true" debug="1" useSystemClassLoaderAsParent="false" />
 </Context>
替代性的解决方案:
子工程PassoDB,PassoWebCommon还没有完全的实现热部署。主Web项目可以热部署。
之前部署不成功的可能原因:

ClassNotFound Exception. 全部打包后的War文件解压后替换到 PassoWebApp/src/main/WEB-INF/webapp 下后可以正常部署,说明因为server.xml配置不完全,缺少必要的文件?!
重新导入了Projects,原来的Projects的Tomcat插件下的相关属性可能因为多次修改已经混乱。
class文件都在 PassoWebApp/src/main/WEB-INF/webapp/classes 路径下,Eclipse IDE中不显示,Finder中可看
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: