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

WEB-INF/classes在.class和.java扩展中都包含我的类,java,eclipse,maven-2,classpath,Java,Eclipse,Maven 2,Classpath,我最近遇到了一些小麻烦,我注意到我的WAR项目由Tomcat使用Eclipse编译和部署时,文件夹WEB-INF/classes应该包含二进制版本的类:MyClass.class,实际上包含类的.class和.java扩展。更清楚的是,当我编译和运行我的web项目时,我在web-INF/classes中有一个Aclass.java,如果得到:Aclass.java和Aclass.class,通常我只能找到:Aclass.class 我正在使用EclipseIndigo/Managing和Mave

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


我正在使用EclipseIndigo/Managing和Maven2.0,您可以使用source导出.war,这可能就是您的情况。如果右键单击项目并选择“导出”>“war”,则可以取消选择导出源以及要生成的war的其他详细信息

在您的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>

在我的例子中,这是因为Eclipse没有正确地遵守pom.xml中的设置。Eclipse尝试读取pom.xml并将自身配置为匹配。它不会直接从pom.xml中运行


我不得不手动调整Eclipse的设置。具体地说,在“项目”>“部署程序集”下,确保“源”和“部署路径”列没有将一个源文件夹映射到WEB-INF/类。

是否每次都会发生这种情况?你有没有试过在建造之前把它清理干净?是的,每次都是!我几乎总是在部署前进行构建和清理,为什么不向我们展示您的pom并向我们解释如何构建您的战争?如果没有这些信息,我们唯一能给出的答案就是出了问题。修复它。我检查了您提供的链接,但是我的pom.xml中没有任何这些规范。我已经用一个项目的pom.xml配置摘录更新了我的问题。该资源包含大多数配置文件,包括属性文件、用于项目特定部署的WEB-INF/WEB.xml文件,在本例中是开发人员部署目标。。。