- importcom.extjs.gxt.ui.client.data.BaseModel;
- publicclassTestAextendsBaseModel{
- @Override
- public<X>Xget(Stringproperty){
- returnsuper.get(property);
- }
- }
使用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目录下:
- <targetname="compile"description="CompileJavaclassesrequiredonserverside">
- <mkdirdir="war/WEB-INF/classes"/>
- <javacsrcdir="src"destdir="war/WEB-INF/classes"encoding="utf-8"compiler="org.eclipse.jdt.core.JDTCompilerAdapter"
- source="1.6"target="1.6">
- <classpath>
- <pathrefid="gwt.classpath"/>
- <pathrefid="compile.classpath"/>
- </classpath>
- <compilerargvalue="-Xlint"/>
- </javac>
- </target>
这里需要注意指定source和target的版本,否则可能会出现编译错误
通过这个配置,可以保证对所有java源码进行编译,另外在这一步编译完成后,还需要用gwt编译器将客户端代码编译为javascript,这个通过gwt提供的编译器来完成,其配置如下:
- <targetname="gwtc"description="GWTcompiletoJavaScript"depends="compile">
- <mkdirdir="war/WEB-INF/classes"/>
- <javafork="true"classname="com.google.gwt.dev.Compiler">
- <classpath>
- <pathelementlocation="${src.dir}"/>
- <pathelementlocation="war/WEB-INF/classes"/>
- <pathrefid="compile.classpath"/>
- <filesetdir="${gwt.home}">
- <includename="*.jar"/>
- </fileset>
- </classpath>
- <jvmargvalue="-Xmx512M"/>
- <argvalue="-logLevel"/>
- <argvalue="INFO"/>
- <argvalue="-style"/>
- <argvalue="Obfuscated"/>
- <argvalue="com.certus.isa.isa"/>
- </java>
- </target>
上面的target,只需要提前定义好src.dir和gwt.home两个属性变量即可
本文出自 “智慧网管” 博客,请务必保留此出处http://wisenms.blog.51cto.com/813376/436134