1. 程式人生 > >eclipse中web工程引用其它工程的配置說明

eclipse中web工程引用其它工程的配置說明

我的eclipse版本資訊如下:
Eclipse Java EE IDE for Web Developers.
Version: Luna Service Release 1 (4.4.1)
Build id: 20140925-1800

首先我們建立一個web工程aWebProj和一個普通java工程aCommon。如下圖:
工程結構
其中aWebProj是我們要釋出的web工程,aCommon是存放一些工具類的工程。為什麼要單獨構建一個工程呢?這是考慮到,有可能還有一個bWebProj工程,也會用到相同的工具類,所以把能夠複用的工具類、entity、pojo之類的獨立建一個工程。
然後web工程引用工具類工程,如下所示:
這裡寫圖片描述


然後在web工程裡就可以引用工具類的方法了。
這時候我們將aWebProj釋出到tomcat中,如下圖:
這裡寫圖片描述
但是此時我們到tomcat的webapps目錄下檢視aWebProj工程時會發現,aCommon包並沒有打進來。這會導致我們啟動時報類不存在的異常。

這裡需要特別說明一下。這個問題算是某些eclipse版本的bug,並不是所有的eclipse上都有的問題,如果你所用的eclipse恰好沒有問題,那麼可以不用往下看了。

如果碰到此類問題,可參考如下的解決方案。
首先先確保被引用的aCommon工程的屬性是一個Module。如下所示:
這裡寫圖片描述
然後開啟aWebProj工程所在的目錄,開啟.settings目錄,用文字方式開啟org.eclipse.wst.common.component這個配置檔案:
這裡寫圖片描述


此時你會看到的內容為:

<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="aWebProj">
        <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
        <wb-resource deploy-path="/WEB-INF/classes"
source-path="/src"/>
<property name="context-root" value="aWebProj"/> <property name="java-output-path" value="/aWebProj/build/classes"/> </wb-module> </project-modules>

增加關鍵的三行內容後:

<?xml version="1.0" encoding="UTF-8"?><project-modules id="moduleCoreId" project-version="1.5.0">
    <wb-module deploy-name="aWebProj">
        <wb-resource deploy-path="/" source-path="/WebContent" tag="defaultRootSource"/>
        <wb-resource deploy-path="/WEB-INF/classes" source-path="/src"/>
        <dependent-module archiveName="aCommon.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/aCommon/aCommon">
            <dependency-type>uses</dependency-type>
        </dependent-module>
        <property name="context-root" value="aWebProj"/>
        <property name="java-output-path" value="/aWebProj/build/classes"/>
    </wb-module>
</project-modules>

儲存關閉。這時候重新整理aWebProj工程,重新載入到tomcat中,會是這個樣子:
這裡寫圖片描述
和上面載入時的對比一下,發現aWebProj裡多了一個aCommon圖示,這說明編譯到tomcat裡的工程,是將aCommon打成jar包放進去了。此時可以再到tomcat的webapps目錄下檢視aWebProj工程,aCommon.jar存在於aWebProj\WEB-INF\lib目錄下。

再次強調一下我們在org.eclipse.wst.common.component這個配置檔案裡增加的三行內容:

        <dependent-module archiveName="aCommon.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/aCommon/aCommon">
            <dependency-type>uses</dependency-type>
        </dependent-module>

其中aCommon.ja和aCommon/aCommon,根據自己需要引入工程的名字更改一下即可。