JdbcConnectionSource не найден при использовании ORMLite, скомпилированного в проекте Java в Eclipse ide

Я разрабатываю приложение с eclipse и используя сопоставление объектов (ORMLite) для доступа к моему mysql сервер. Слой данных - это еще один проект, составленный в java и связано как ссылка на мое приложение для Android.

В проекте datalayer я ссылаюсь на каждый файл *.jar, используемый с ormlite. Но при запуске моего приложения я получаю следующее сообщение об ошибке:

"Could not find class 'com.j256.ormlite.jdbc.JdbcConnectionSource',
     referenced from method
     com.pos.datalayer.querybuilder.DatabaseWorker.connectionSetup"

Вот мой код класса DatabaseWorker:

public class DatabaseWorker implements DatalayerWorkable {

  private Type tableMapping = null;
  private String actionOnDatabase = null;
  private UserBO persistedUser = null;
  private Type retVal = null;

  public static String hostString = "jdbc:mysql://lucid.selfhost.me/pos";
  private static JdbcConnectionSource connection = null;

  public DatabaseWorker () { };

  public Type loadData(  String databaseAction, final Type tableMap ) {
      actionOnDatabase = databaseAction;
      tableMapping = tableMap;

        Thread workerThread = new Thread(new Runnable(){
            public void run() {
                try {
                    connection = connectionSetup();

                    if(actionOnDatabase == "GetLogin"){
                        retVal = loadUserData(tableMap); 

                  }else if (actionOnDatabase == "loadHotDealz"){

                  }
                } catch (SQLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }finally{
                    if(connection != null){
                        //closeConnection(connection);
                        connection = null;
                    }
                }
            }  
          });
         workerThread.start();

    return retVal;
  }

  public boolean persistData( String databaseAction, Type tableMap ) {
      Thread workerThread = new Thread(new Runnable(){
          public void run(){
          }
      }); 
      return false;
  }

  private JdbcConnectionSource connectionSetup() throws SQLException{
        //set up sql-connection
        JdbcConnectionSource connection = new JdbcConnectionSource(hostString);
        ((JdbcConnectionSource) connection).setUsername("guest");
        ((JdbcConnectionSource) connection).setPassword("ObivanK3nobi");

        return connection;
  }

    private void closeConnection(JdbcConnectionSource openedConnection){
        try{
            if(openedConnection != null){
                openedConnection.close();
            }
        }catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }

    private Type loadUserData(Type tableMapping) throws SQLException{
        Dao<UserBO, String> accountDao = null;

        if(connection != null){
            accountDao = DaoManager.createDao(connection, tableMapping.getClass());
            String currentUser = ((UserBO) tableMapping).getUser();
            //execute query
            persistedUser = accountDao.queryForId(currentUser);

            if(persistedUser != null){
               persistedUser.setIsLoggedin(1);
               accountDao.update(persistedUser);
            }
        }
        return persistedUser;
    }

    public Type getDatabaseResult(){
        return retVal;
    }

    public void databaseObjCallback(Type databaseResult) {
        throw new UnsupportedOperationException("Not implemented yet");
    }

}

Буду признателен за любую помощь в решении моей проблемы!

1 ответ

Решение

Я думаю, что это проблема пути к классам, если вы не находите ключевые классы ORMLite. Вы должны были загрузить ormlite-core а также ormlite-jdbc банки с тем же номером версии. Последняя версия 4.45.

В eclipse в вашем проекте вы должны увидеть папку "Библиотеки со ссылками" или, если вы используете Maven, папку "Зависимости Maven". Оба файла ORMLite должны находиться в одной из этих двух папок, показывая, что они находятся в пути сборки.

Возможно, вам понадобится щелкнуть правой кнопкой мыши ваш проект, открыть меню "Путь сборки", а затем выпустить "Настроить путь сборки". Затем перейдите на вкладку "Библиотеки" и убедитесь, что обе банки ORMLite есть. Если это не так, вам нужно добавить их туда.

Что касается версий коннектора MySQL JDBC, я использую версию 5.1.18, но я думаю, что более новые тоже подойдут. Я не думаю, что несовместимая версия вызовет эту ошибку.

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>5.1.18</version>
</dependency>

Надеюсь это поможет.

Другие вопросы по тегам