Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用ant将一个类从战争中排除_Java_Eclipse_Ant - Fatal编程技术网

Java 使用ant将一个类从战争中排除

Java 使用ant将一个类从战争中排除,java,eclipse,ant,Java,Eclipse,Ant,我有一个使用RMI的web应用程序,因此它包括RMI接口类,但不包括其实现。为了避免在两个地方重复接口定义,我试图将RMI服务器代码保留在web应用程序的Eclipse项目中;但是RMI服务器类必须从war文件中排除,因为它有一个main()方法。build.xml和.spec中的jar任务用于为RMI服务器守护进程生成RPM 我试着在战争任务中使用排除子句,然后在课堂上 <war webxml="${web.dir}/WEB-INF/web.xml" destfile="${di

我有一个使用RMI的web应用程序,因此它包括RMI接口类,但不包括其实现。为了避免在两个地方重复接口定义,我试图将RMI服务器代码保留在web应用程序的Eclipse项目中;但是RMI服务器类必须从war文件中排除,因为它有一个main()方法。build.xml和.spec中的jar任务用于为RMI服务器守护进程生成RPM

我试着在战争任务中使用排除子句,然后在课堂上

    <war webxml="${web.dir}/WEB-INF/web.xml" destfile="${dist.dir}/${ant.project.name}.war">
    <classes dir="${build}" excludes="**/RMIServer.class" />
        <fileset dir="${web.dir}" />
        <manifest>
            <attribute name="Built-Date" value="${TODAY}" />
            <attribute name="Built-By" value="${user.name}" />
        </manifest>
    </war>

然后在文件集中:

    <war webxml="${web.dir}/WEB-INF/web.xml" destfile="${dist.dir}/${ant.project.name}.war">
        <classes dir="${build}" />
        <fileset dir="${web.dir}" >
            <exclude name="**/RMIServer*.class"/>
        </fileset>
        <manifest>
            <attribute name="Built-Date" value="${TODAY}" />
            <attribute name="Built-By" value="${user.name}" />
        </manifest>
    </war>

但是我一直无法让它工作-服务器类仍然在war/WEB-INF/classes/


我怎样才能做到这一点?或者,单个项目的这一目标是不明智的吗?

你的最后一句话呼应了我的想法。如果我有一个web服务器和一个RMI服务器,我会将它们放在不同的项目中,即使一个调用另一个。我可能会用Maven或类似的东西来帮助我


我现在会非常惊讶地发现,有一个项目将两个不同的服务器流程实现放在一个Eclipse/IDEA/Maven/Ivy/other项目中。

是您的文件集。类文件不需要同时使用
。我认为,当你将它从其中一个排除时,它就会被另一个排除。

也许可以展示你排除的尝试,并说明它以何种方式不起作用?有人可能会建议如何解决这个问题。Queestion与RMI没有任何具体关系。未测试,但在此代码中
excludes=“**/RMIServer.class”
我认为应该只
exclude
而不使用
s
结尾?谢谢@wiskyspider!我没有意识到这一点,这正是我需要知道的。在尝试了几个版本后,结果证明这一版本得到了正确的结果:删除了war/WEB-INF/classes/中出现的每个类的两个副本,也解决了这个神秘的问题。再次感谢。