2011-04-10 69 views
1

我有以下代码:日食不显示编译错误,但蚂蚁失败的编译

SortedSetByDoubleValue<String,Double> set = SortedSetByDoubleValue.create(); 

它在Eclipse上没有编译错误,但运行javac与蚂蚁当它失败的编译:

[javac] .../TestSortedSetByComparable.java:55: incompatible types; no instance(s) of type variable(s) E,T exist so that ....SortedSetByDoubleValue<E,T> conforms to ....SortedSetByDoubleValue<java.lang.String,java.lang.Double> 
    [javac] found : <E,T>....SortedSetByDoubleValue<E,T> 
    [javac] required: ....SortedSetByDoubleValue<java.lang.String,java.lang.Double> 
    [javac]    SortedSetByDoubleValue<String,Double> set = SortedSetByDoubleValue.create(); 
    [javac]                     ^
    [javac] 5 errors 

然而改变代码时:

SortedSetByDoubleValue<String,Double> set = SortedSetByDoubleValue.<String,Double>create(); 

它与正编译o错误。

Ant目标是:

<javac srcdir="." fork="yes" executable="/usr/java/1.6.0.10/bin/javac" verbose="yes" destdir="build" debug="on" failonerror="true" source="1.6"> 
      <classpath> 
       <fileset dir="../ant/dist"> 
        <include name="**/*.jar" /> 
       </fileset> 
       <fileset dir="../external/powermock-1.2.5/"> 
         <include name="**/*.jar" /> 
       </fileset> 
       <pathelement path="${external_jars}" /> 
      </classpath> 
     </javac> 
+0

请。发布足够的代码,以便其他人可以复制它。 – irreputable 2011-04-10 13:15:29

+0

我想我给了足够的代码,你还期望什么? – oshai 2011-04-10 13:39:51

+0

所以如果我编译这一行代码,我会得到编译器错误信息? – irreputable 2011-04-10 13:51:11

回答

2

Eclipse使用不同的编译器到正规的javac蚂蚁会用。然而,它更可能是使用不同版本的Java的问题,例如5.0比6

编辑:请尝试以下

SortedSetByDoubleValue<String,Double> set = 
    SortedSetByDoubleValue<String,Double>.create(); 
+0

时给出错误,据我所知,两者都运行在1.6 JDK – oshai 2011-04-10 07:50:46

+1

据我所知,Java 5和6之间的类型推断规则没有变化。类型推断是编译器之间差异最大的领域。多数情况下,错误与'javac'有关(即Eclipse编译器通常更接近规范)。 – 2011-04-10 07:53:02

+0

我尝试使用sun编译器与蚂蚁,它不工作。为eclipse项目配置相同的jdk。 – oshai 2011-04-10 08:12:12