如何使用j2objc将sqlite-jdbc-3.8.11.1.jar转换为iOS?

时间:2018-03-02 07:50:19

标签: ios j2objc

我正在将一个java项目转换为Objective c(在iOS上)。

然而,当我运行它时,它正在击中:

  

***由于未捕获的异常'JavaLangClassNotFoundException'终止应用程序,原因:   'java.lang.ClassNotFoundException:org.sqlite.JDBC'

我已经在源路径中添加了“$ CURRENT_DIR / libs / sqlite-jdbc-3.8.11.1.jar”。

我甚至试图从bitbucket获取源代码: https://bitbucket.org/xerial/sqlite-jdbc/commits/tag/sqlite-jdbc-3.7.2

然而,翻译后它给了我很多错误:

  

src-sqlite-test / org / sqlite / SQLiteErrorCode.java:88:错误:非法   开始表达       for(SQLiteErrorCode each:)

     

src-sqlite-test / org / sqlite / core / CorePreparedStatement.java:118:错误:   ')'预计       switch(1. $ SwitchMap $ org $ sqlite $ SQLiteConfig $ DateClass [conn.dateClass.ordinal()]){

     

src-sqlite-test / org / sqlite / core / CorePreparedStatement.java:118:错误:   case,default或'}'预期       switch(1. $ SwitchMap $ org $ sqlite $ SQLiteConfig $ DateClass [conn.dateClass.ordinal()])   {

另一个选择是使用ios本机sqlite库来访问数据库。

1 个答案:

答案 0 :(得分:1)

考虑切换到SQLighter(https://github.com/vals-productions/sqlighter),这是一个Java ORM,它使用Android和iOS中内置的原生SQLite库。由于本机平台支持,它小而快,而且通常更容易将Java代码编写到ORM,需要更少的样板代码。

J2ObjC不支持JDBC,因为它对于移动应用程序来说是一个糟糕的选择(缓慢,笨重),数据库供应商也不提供iOS版本的驱动程序。从理论上讲,你可以通过移植JDBC来移植Xerial,但这是一个很大的任务,可能在你的应用程序中表现不佳。 j2objc团队有一句话适用于此:"只是因为某些可以被翻译并不意味着它应该是。" : - )