ant使用javac构建GXT项目

为方便构建、打包项目,项目准备采用ant来构建,但在执行compile的target时,发现javac无法编译GXT的部分代码,例如:
 
 
  1. importcom.extjs.gxt.ui.client.data.BaseModel;
  2. publicclassTestAextendsBaseModel{
  3. @Override
  4. public<X>Xget(Stringproperty){
  5. returnsuper.get(property);
  6. }
  7. }

使用javac编译,就会出现

无法确定 <X>X 的类型参数;对于上限为 X,java.lang.Object 的类型变量 X,不存在唯一最大实例

然而在eclipse里面却可以编译通过,一开始以为是javac编译选项设置不对,后来发现怎么试也不行,后来在网上查了下,原来eclipse的编译器用的不是javac,而是自带的jdt,而jdt则存在于eclipse的一个plugin里面的org.eclipse.jdt.core_3.5.2.v_981_R35x.jar文件中,注意另外还要从改jar文件中将jdtCompilerAdapter.jar拉出来,然后把这两个jar文件都放到放到ant的lib目录下:

 
  1. <targetname="compile"description="CompileJavaclassesrequiredonserverside">
  2. <mkdirdir="war/WEB-INF/classes"/>
  3. <javacsrcdir="src"destdir="war/WEB-INF/classes"encoding="utf-8"compiler="org.eclipse.jdt.core.JDTCompilerAdapter"
  4. source="1.6"target="1.6">
  5. <classpath>
  6. <pathrefid="gwt.classpath"/>
  7. <pathrefid="compile.classpath"/>
  8. </classpath>
  9. <compilerargvalue="-Xlint"/>
  10. </javac>
  11. </target>

这里需要注意指定source和target的版本,否则可能会出现编译错误

通过这个配置,可以保证对所有java源码进行编译,另外在这一步编译完成后,还需要用gwt编译器将客户端代码编译为javascript,这个通过gwt提供的编译器来完成,其配置如下:

 
  1. <targetname="gwtc"description="GWTcompiletoJavaScript"depends="compile">
  2. <mkdirdir="war/WEB-INF/classes"/>
  3. <javafork="true"classname="com.google.gwt.dev.Compiler">
  4. <classpath>
  5. <pathelementlocation="${src.dir}"/>
  6. <pathelementlocation="war/WEB-INF/classes"/>
  7. <pathrefid="compile.classpath"/>
  8. <filesetdir="${gwt.home}">
  9. <includename="*.jar"/>
  10. </fileset>
  11. </classpath>
  12. <jvmargvalue="-Xmx512M"/>
  13. <argvalue="-logLevel"/>
  14. <argvalue="INFO"/>
  15. <argvalue="-style"/>
  16. <argvalue="Obfuscated"/>
  17. <argvalue="com.certus.isa.isa"/>
  18. </java>
  19. </target>

上面的target,只需要提前定义好src.dir和gwt.home两个属性变量即可

本文出自 “智慧网管” 博客,请务必保留此出处http://wisenms.blog.51cto.com/813376/436134

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值