在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應用也沒有問題。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章