Aşağıdaki parçacık (gerçek dünya kodundan soyutlanmış) derler ve Eclipse'de çalışır. ŞimdiEclipse ve javac arasındaki garip derleyici farkı
package1\Outer.java:31: cannot find symbol
symbol : class Bar
location: class package1.Outer
public static class Mid implements Bar {
^
package1\Outer.java:42: method does not override or implement a method from a supertype
@Override
^
2 errors
:
Paket1/Outer.java:
package package1;
import package1.Outer.Mid.Inner;
import package2.Bar;
public class Outer {
final Mid mid = new Mid();
public Outer() {
mid.setInner(new Inner() {
@Override public void foo() {
System.out.println("In Outer.foo()");
}
});
}
public static class Mid implements Bar {
private Inner inner;
public void setInner(Inner inner) {
this.inner = inner;
}
public Inner getInner() {
return this.inner;
}
@Override
public void bar() {}
interface Inner {
void foo();
}
}
}
package2/Bar.java: javac kullanarak derleme yaparken
package package2;
public interface Bar {
void bar();
}
Ancak, bu hata ile başarısız , İçe aktarma ifadelerinin sırasını değiştirirsem, şöyle olur:
import package2.Bar;
import package1.Outer.Mid.Inner;
... Daha sonra hem Eclipse hem de javac'ta derler. Açıkçası, ithalat ifadelerinin sırası önemli gibi görünüyor ... ama neden?
Notlar:
- Ben de bu kullanarak Java JDK 1.6.0_30 ve Java JDK 1.7.0_21 test etti. Bu, düzeltilen bir hata ise, bu bilmek güzel olurdu.
- O
package1.Outer.Mid.Inner
ithalatInner
arayüzü Outer.java içinde yuvalanmış verilen, hatta gerekli olduğunu bana garip görünüyor ama Eclipse ve Javac hem ben bir Ant yapı çalıştırın çalışırken bu sorunu keşfettim o - gerektirecek gibi görünüyor Benzer bir yapıya sahip üretim kodu. Her şey Eclipse'de güzeldi, ama Karınca yazısı sadece geçmeyi reddetti.
Elbette emin değilim ama muhtemelen Eclipse elinizdekinden farklı bir derleme komutu veriyor. Belki de sipariş tersine çevrilir. Diğer tek olasılık, java derleyicinin farklı versiyonlarıdır. – Gene
Kodunuzun gereksiz bölümlerini silip, aynı garip sonuçları üreten minimum değeri bize bırakma şansınız var mı? – arshajii
@Gene Eclipse kendi derleyicisine sahiptir. – EJP