在Eclipse中运行Tomcat6源代码,保证正确的classpath

  网上有一些文章介绍将Tomcat源代码导入Eclipse并运行。然而,这些文章几乎都没有提及classpath的设置。
  使用默认的classpath会使Eclipse中运行的Tomcat与发行版Tomcat(通过startup.bat等方式运行)的system class loader所能加载到的类不同,这样可能导致一些问题。例如部署shopizer 1.1.5(http://www.shopizer.com/)应用时,在Eclipse中运行的Tomcat会有如下异常信息:
  java.lang.VerifyError: (class: org/springframework/mail/javamail/JavaMailSenderImpl, method: doSend signature: ([Ljavax/mail/internet/MimeMessage;[Ljava/lang/Object;)V) Incompatible argument to function
  而发行版Tomcat没有问题。

  我们试图通过Eclipse的run configuration设置使Tomcat在运行时的classpath等各种配置信息与发行版Tomcat尽量保持一致。

  我们使用Eclipse 3.6.2,将Tomcat 6.0.32源代码导入(导入方法不再赘述,请参考网上其他文章)。假设Tomcat源代码所在目录为“E:\tomcat6”,Ant builder(需要自己工程的“Builders”里添加一个“Ant Builder”,Buildfile选工程根目录下的build.xml)的输出目录为“E:\tomcat6\output\build”(这是Tomcat的build.xml的默认设置)。

  新建一个run configuration,Main class选择org.apache.catalina.startup.Bootstrap,如下图所示:

 


  Program arguments填“start”,VM arguments填如下内容:
  -Djava.util.logging.config.file="E:\tomcat6\output\build\conf\logging.properties" -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs="E:\tomcat6\output\build\endorsed" -Dcatalina.base="E:\tomcat6\output\build" -Dcatalina.home="E:\tomcat6\output\build" -Djava.io.tmpdir="E:\tomcat6\output\build\temp"
  如下图所示:


 

  在Classpath选项卡中,删除User Entries下的所有内容,然后点“Add Jars”,将工程中的output\build\bin\bootstrap.jar加入,如下图所示:


 

 

  这样就可以运行了。部署shopizer 1.1.5应用也没有问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值