Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.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构建失败,样板生成和生成器(GWT平台)_Java_Gwt_Ant_Gwt Platform - Fatal编程技术网

Java Ant构建失败,样板生成和生成器(GWT平台)

Java Ant构建失败,样板生成和生成器(GWT平台),java,gwt,ant,gwt-platform,Java,Gwt,Ant,Gwt Platform,我有一个build.xml可以正常工作,直到我开始使用样板生成并创建生成器 在开发模式下一切正常,但我无法为我的应用程序生成war 我认为这是因为gen类将生成/apt_,而不是/src,而我的ant编译/src,我对生成器一无所知 我只是想让它工作,但我做不到 有人能帮我吗 我的build.xml如下所示: 编辑 我修改了build.xml,现在又有了一个属性,,我的编译目标变成了: <target name="compile" depends="prepare">

我有一个build.xml可以正常工作,直到我开始使用样板生成并创建生成器

在开发模式下一切正常,但我无法为我的应用程序生成war

我认为这是因为gen类将生成
/apt_
,而不是
/src
,而我的ant编译
/src
,我对生成器一无所知

我只是想让它工作,但我做不到

有人能帮我吗

我的build.xml如下所示:

编辑

我修改了build.xml,现在又有了一个属性,
,我的编译目标变成了:

<target name="compile" depends="prepare">
        <javac destdir="${build.dir}">
            <src location="${src.dir}" />
            <src location="${apt_generated.dir}" />
            <classpath refid="project.classpath" />
        </javac>
    </target>


这“解决”了生成apt_的问题(我认为),但我仍然无法构建它,因为SourceWriter和javax.validation类的错误。

生成的类也需要编译。由于在您的示例中没有看到任何代码生成,所以我只假设了以下值

 <target name="compile" depends="prepare">    
        <-- compile generated classes-->
        <javac srcdir="${apt_generated.dir}" destdir="${build.generated.dir}">
            <classpath refid="project.classpath"/>
        </javac>    

        <-- compile sources -->   
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath location="${build.generated.dir}"/>
            <classpath refid="project.classpath"/>
        </javac>        
    </target>  

正如您在评论中所述,生成的类取决于源,反之亦然,因此您需要:

  • 或者拆分您的项目,以便所有公共依赖项都位于另一个项目中
  • 或者把所有的东西都汇编在一起
第二步可以像这样完成:

 <target name="compile" depends="prepare">    
     <javac destdir="${build.dir}">
        <src location="${src.dir}" />
        <src location="${apt_generated.dir}" />
        <classpath refid="project.classpath" />
     </javac>   
 </target>  

如果还有任何遗漏,请确保:

  • 相应的lib包含在project.classpath中(如果您不确定缺少哪个jar,可以尝试
  • 所有源都位于一个src dir上

我明白,问题是我生成的类使用了我正常源代码中的很多类,而我的正常源代码使用的是apt_生成的类。听起来像是一个相互依赖的问题。你怎么看?@caarlos0是的,这是一个问题,你能把生成的类放到src文件夹中吗?然后你可以一次编译所有内容。Javac只能有on dir,但是如果所有类都在一个src dir中,你就不会有任何问题。我能够用apt_generate“解决”这个问题(我编辑了这个问题),但是,我仍然在SourceWriter、javax.validation.*和其他方面遇到错误…有什么想法吗?@caarlos0很难说,确保丢失的.java文件在src dir中或在lib.dir中的某个lib中。所有lib都在WEB-INF/lib中,我将它们都放在类路径中进行编译…这些类也都是正确的。。。
 <target name="compile" depends="prepare">    
        <-- compile generated classes-->
        <javac srcdir="${apt_generated.dir}" destdir="${build.generated.dir}">
            <classpath refid="project.classpath"/>
        </javac>    

        <-- compile sources -->   
        <javac srcdir="${src.dir}" destdir="${build.dir}">
            <classpath location="${build.generated.dir}"/>
            <classpath refid="project.classpath"/>
        </javac>        
    </target>  
 <target name="compile" depends="prepare">    
     <javac destdir="${build.dir}">
        <src location="${src.dir}" />
        <src location="${apt_generated.dir}" />
        <classpath refid="project.classpath" />
     </javac>   
 </target>