2013-07-04 22 views
0

最近我遇到了一些小問題,我注意到當我的WAR項目由Tomcat使用Eclipse進行編譯和部署時,發現Folder WEB-INF/classes它應該包含我的二進制版本類:MyClass.class,其中包含我的類的.class和.java擴展名。更清楚的是,我有一個Aclass.java,當我編譯和運行我的web項目,在WEB-INF/classes中,如果得到:Aclass.java和Aclass.class,當我通常只能找到時:Aclass.classWEB-INF/classes包含.class和.java擴展的我的類

我正在使用Eclipse Indigo /使用Maven2.0管理

+0

這是否每次都發生?您是否嘗試在Build之前製作Clean? – LexLythius

+0

是的,每次都是!我幾乎總是在部署前進行構建和清理 –

+0

爲什麼不向我們展示你的POM並向我們解釋你如何構建你的戰爭?如果沒有這些信息,我們唯一可以回答的就是「有問題,修復它」。 –

回答

1

在我而言,這是通過Eclipse中無法正常在我pom.xml尊重設置引起的。 Eclipse會嘗試讀取您的pom.xml並配置其自身以匹配。它確實不是直接跑掉pom.xml。我不得不手動調整Eclipse的設置。具體來說,在Project> Deployment Assembly下,確保'Source'和'Deploy Path'列不會將你的一個源文件夾映射到WEB-INF/classes。

0

您可以將源代碼導出爲「.war」,可能就是您的情況正在發生的事情。如果您在項目上「右鍵單擊」並選擇「導出」>「戰爭」,則可以「取消選擇」「導出源」以及有關要生成的戰爭的其他詳細信息。

在你的maven中,你可能有一些「指向」的細節來包含你的源文件(例如在這個問題中顯示瞭如何包含源文件:How to generate a WAR with the source code in Maven?,如果你不需要源文件在生成的WAR中)。


pom.xml中不包含Java源文件的「配置」部分摘錄:

<configuration> 
    <classifier>dev</classifier> 
    <webappDirectory>${project.build.directory}/${project.build.finalName}-dev</webappDirectory> 
    <webResources> 
     <resource> 
      <directory>src/env/dev</directory> 
      <includes> 
       <include>**/*.properties</include>         
       <include>**/*.xml</include> 
       <include>**/*.css</include> 
       <include>**/*.html</include>        
      </includes> 
     </resource> 
    </webResources> 
</configuration> 
+0

我檢查了你提供的鏈接,但我沒有任何關於我的pom.xml中的規範 –

+0

我已經用pom.xml「配置」摘錄(來自我正在處理的項目)更新了我的問題。 「資源」包含用於項目特定部署的大多數配置文件(包括「屬性」文件,「WEB-INF/web.xml」文件),在這種情況下是「dev」部署目標... – emgsilva