WEB-INF / classes包含.class和.java扩展中的类

时间:2013-07-04 17:46:57

标签: java eclipse maven-2 classpath

我最近遇到了一些奇怪的事情,我注意到我的WAR项目是由Tomcat使用Eclipse编译和部署的,文件夹WEB-INF /类应该包含我的二进制版本的类:MyClass.class,包含实际的我班的.class和.java扩展。更清楚的是,我有一个Aclass.java,当我编译并运行我的web项目时,在WEB-INF / classes中如果得到:Aclass.java和Aclass.class,当normaly我应该只找到:Aclass.class

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

2 个答案:

答案 0 :(得分:2)

就我而言,这是因为Eclipse没有正确地尊重我pom.xml中的设置。 Eclipse尝试读取您的pom.xml并将其自身配置为匹配。它直接从pom.xml运行。

我必须手动调整Eclipse的设置。具体来说,在Project>下部署程序集确保“来源”。和'部署路径'列不会将您的一个源文件夹映射到WEB-INF / classes。

答案 1 :(得分:0)

您可以使用source导出“.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>