2011-04-10 95 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