0

我正在开发一个应用程序eclipse并使用对象相关映射(ORMLite)来访问我的mysql服务器。数据层是编译的另一个项目java并绑定为我的 android 应用程序的引用

我在 datalayer 项目中引用了与 ormlite 一起使用的每个 *.jar 文件。但是在运行我的应用程序时,我收到以下错误消息:

"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");
    }

}

我将不胜感激任何帮助解决我的问题!

4

1 回答 1

2

如果您没有找到关键的 ORMLite类,我会认为这是一个类路径问题。您应该已经下载了具有相同版本号的ormlite-core和jar。ormlite-jdbc最新版本是 4.45。

在 Eclipse 中,在您的项目下,您应该会看到一个“Referenced Libraries”文件夹,或者,如果您使用的是 Maven,则会看到一个“Maven Dependencies”文件夹。两个 ORMLite jar 都应该在这两个文件夹之一中,表明它们在构建路径中。

您可能需要右键单击您的项目,将菜单下拉到“构建路径”,然后下拉到“配置构建路径”。然后单击“库”选项卡并确保两个 ORMLite jar 都在那里。如果不是,那么您需要在此处添加它们。

在 MySQL JDBC 连接器版本方面,我使用 5.1.18 版本,但我认为更新的版本也可以。我认为不兼容的版本不会导致该错误。

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

希望这可以帮助。

于 2013-04-29T18:40:39.603 回答