2014-10-24 2 views
5

Mam wewnętrzną klasę, która rozszerza AbstractTableModel.import -> "nie można odnaleźć symbolu" | pełna nazwa -> perfect

import javax.swing.table.AbstractTableModel; 

public class MyClass extends MyAbstractClass { 
    ... 
    public static class MyTableModel extends AbstractTableModel { 
    } 
    ... 
} 

Kompilator daje mi następujący błąd.

...\MyClass.java:190: error: cannot find symbol 
     public static class MyTableModel extends AbstractTableModel { 
               ^
    symbol: class AbstractTableModel 
    location: class MyClass 

Przy zmianie

MyTableModel extends AbstractTableModel 

do

MyTableModel extends javax.swing.table.AbstractTableModel 

wszystko działa poprawnie.

Używam Gradle do budowania projektu. Zanim przełączyłem się na Gradle, użyłem Eclipse do zbudowania projektu. Nie miałem problemu z Eclipse, błąd występuje tylko wtedy, gdy buduję z Gradle.

Czy masz pojęcie, co może być przyczyną tego dziwnego zachowania?

Odpowiedz

4

Błąd został spowodowany przez moje zamówienie importowe. MyTableModel zawiera interfejs MyTableListener, który jest również importowany przez MyClass.java.

import MyClass.MyTableModel.MyTableListener; 
... 
import javax.swing.table.AbstractTableModel; 
... 
public class MyClass extends MyAbstractClass { 
... 
    public static class MyTableModel extends AbstractTableModel { 
     public interface MyTableListener { 
      public void entryChanged(); 
     } 
     ... 
    } 
... 
} 

Kiedy kładę import MyTableListener przed AbstractTableModel import Gradle daje mi nie może odnaleźć symbol błąd.

Po umieszczeniu importu AbstractTableModel przed importem MyTableListener wszystko działa poprawnie.

Jak dotąd tak dobrze, ale dlaczego zlecenie importu nie stanowi problemu podczas budowania z Eclipse ?!

+0

Wow, dzięki za to. Próbowałem zaimportować projekt zaćmienia i odkryłem ten sam problem. Twoja poprawka działa. Właśnie umieszczam imort z MyClass. * Rzeczy do końca deklaracji importu. – httpdispatch

+0

To samo przydarzyło mi się, gdy rodzic klasy zewnętrznej został zaimportowany po rodzicach klas wewnętrznych. Korzystanie z programu Gradle w wersji 3.3. Dzięki, że wróciłeś i odpowiadasz na pytanie! – Aarjav