2011-11-25 9 views
7

Próbowałem pracować przez przykład HelloAndroid dla ORMLite, ale nie udało się pomyślnie skompilować. Mam problem z klasą DatabaseHelper. Konkretnie metoda getDao():Przykłady ORMLite dla systemu Android nie będą kompilować

/** 
* Returns the Database Access Object (DAO) for our SimpleData class. 
* It will create it or return the cached value. 
*/ 
public Dao<SimpleData, Integer> getDao() throws SQLException { 
    if (simpleDao == null) { 
    simpleDao = getDao(SimpleData.class); 
    } 
    return simpleDao; 
} 

Tutaj jest błąd czasu kompilacji otrzymuję:

Parametry Rodzaj D nie można ustalić; nie wyjątkowy maksymalny istnieje instancja zmiennej typu D z górne granice com.j256.ormlite.dao.Dao, com.j256.ormlite.dao.Dao

+4

Wygląda to jak następujący [błąd] (https://bugs.eclipse.org/bugs/show_bug.cgi?id=98379). Kompilacja działa w środowisku Eclipse, ale nie w zwykłym kompilatorze Javy z powodu problemu z wnioskiem o typ. Jak kompilujesz kod? – CamilleLDN

+1

Używam IntelliJ IDE od JetBrains działającego w systemie Ubuntu 10. – curtisthibault

+0

Zgadzam się z Tobą @Mademoiselle Geek (fajne imię). Hej curtisthibault, jakiej wersji Java używasz w swoim Ubuntu. Wygląda na to, że zostało to naprawione w 6u24-rev (b22) i 6u25 (b01). – Gray

Odpowiedz

7

mam podobny błąd, gdy próbuje zbudować mojego projektu ormlite użyciu Netbeans:

Kompilowanie plików źródłowych do 15 ~/NetBeansProjects/main/build/classes Main.java:74: parametry Rodzaj D nie można ustalić; nie istnieje unikalna maksymalna instancja dla zmiennej typu D z górnymi granicami com.j256.ormlite.dao.Dao, com.j256.ormlite.dao.Dao pcDao = DaoManager.createDao (connectionSource, PC.class);

Z powodu komentarzy zmieniłem moją platformę Java z OpenJDK 1.6 na JDK Oracle 1.7.0_02 i rozwiązanie problemu.

0

Moje rozwiązanie:

public class HelloAndroid extends OrmLiteBaseActivity<DatabaseHelper> 
{ 
    private final String LOG_TAG = getClass().getSimpleName(); 

    /** 
    * Called when the activity is first created. 
    */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     Log.i(LOG_TAG, "creating " + getClass() + " at " + System.currentTimeMillis()); 
    TextView tv = new TextView(this); 
     doSampleDatabaseStuff("onCreate", tv); 
     setContentView(tv); 
    } 

    /** 
    * Do our sample database stuff. 
    */ 
    private void doSampleDatabaseStuff(String action, TextView tv) 
    { 
     // get our dao 
     RuntimeExceptionDao<SimpleData, Integer> simpleDao = getHelper().getSimpleDataDao(); 
     // query for all of the data objects in the database 
     List<SimpleData> list = simpleDao.queryForAll(); 
     // our string builder for building the content-view 
     StringBuilder sb = new StringBuilder(); 
     sb.append("got ").append(list.size()).append(" entries in ").append(action).append("\n"); 

     // if we already have items in the database 
     int simpleC = 0; 
     for (SimpleData simple : list) 
     { 
      sb.append("------------------------------------------\n"); 
      sb.append("[").append(simpleC).append("] = ").append(simple).append("\n"); 
      simpleC++; 
     } 
     sb.append("------------------------------------------\n"); 
     for (SimpleData simple : list) 
     { 
      simpleDao.delete(simple); 
      sb.append("deleted id ").append(simple.id).append("\n"); 
      Log.i(LOG_TAG, "deleting simple(" + simple.id + ")"); 
      simpleC++; 
     } 

     int createNum; 
     do 
     { 
      createNum = new Random().nextInt(3) + 1; 
     } 
     while (createNum == list.size()); 
     for (int i = 0; i < createNum; i++) 
     { 
      // create a new simple object 
      long millis = System.currentTimeMillis(); 
      SimpleData simple = new SimpleData(millis); 
      // store it in the database 
      simpleDao.create(simple); 
      Log.i(LOG_TAG, "created simple(" + millis + ")"); 
      // output it 
      sb.append("------------------------------------------\n"); 
      sb.append("created new entry #").append(i + 1).append(":\n"); 
      sb.append(simple).append("\n"); 
      try 
      { 
       Thread.sleep(5); 
      } 
      catch (InterruptedException e) 
      { 
       // ignore 
      } 
     } 
     tv.setText(sb.toString()); 
     Log.i(LOG_TAG, "Done with page at " + System.currentTimeMillis()); 
    } 
} 
+4

Jakie jest rozwiązanie? Co zmieniłeś w tym przykładzie, aby odpowiedzieć na pytanie @ curtisthibault? Czy możesz to wyjaśnić jeszcze bardziej? – Gray

Powiązane problemy