如何使用 j2objc 将 sqlite-jdbc-3.8.11.1.jar 转换为 iOS?
How to convert sqlite-jdbc-3.8.11.1.jar to iOS using j2objc?
我正在将 java 项目转换为 objective c(在 iOS 上)。
然而,当我 运行 它时,它击中了:
*** Terminating app due to uncaught exception 'JavaLangClassNotFoundException', reason:
'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: error: illegal
start of expression
for (SQLiteErrorCode each : )
src-sqlite-test/org/sqlite/core/CorePreparedStatement.java:118: error:
')' expected
switch (1.$SwitchMap$org$sqlite$SQLiteConfig$DateClass[conn.dateClass.ordinal()]){
src-sqlite-test/org/sqlite/core/CorePreparedStatement.java:118: error:
case, default, or '}' expected
switch (1.$SwitchMap$org$sqlite$SQLiteConfig$DateClass[conn.dateClass.ordinal()])
{
另一种选择是使用ios 原生sqlite 库来访问数据库。
考虑切换到 SQLighter(https://github.com/vals-productions/sqlighter), which is a Java ORM,它使用 Android 和 iOS 中内置的原生 SQLite 库。由于原生平台支持,它体积小,速度快,而且通常更容易将 Java 代码写入 ORM,需要更少的样板代码。
J2ObjC 不支持 JDBC,因为它不是移动应用程序(缓慢、笨重)的糟糕选择,而且数据库供应商不提供 iOS 版本的驱动程序。理论上,您也可以通过移植 JDBC 来移植 Xerial,但这是一项很可能在您的应用程序中执行不佳的任务。 j2objc 团队有一句话适用于此:"just because something can be translated doesn't mean it should be." :-)
我正在将 java 项目转换为 objective c(在 iOS 上)。
然而,当我 运行 它时,它击中了:
*** Terminating app due to uncaught exception 'JavaLangClassNotFoundException', reason: '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: error: illegal start of expression for (SQLiteErrorCode each : )
src-sqlite-test/org/sqlite/core/CorePreparedStatement.java:118: error: ')' expected switch (1.$SwitchMap$org$sqlite$SQLiteConfig$DateClass[conn.dateClass.ordinal()]){
src-sqlite-test/org/sqlite/core/CorePreparedStatement.java:118: error: case, default, or '}' expected switch (1.$SwitchMap$org$sqlite$SQLiteConfig$DateClass[conn.dateClass.ordinal()]) {
另一种选择是使用ios 原生sqlite 库来访问数据库。
考虑切换到 SQLighter(https://github.com/vals-productions/sqlighter), which is a Java ORM,它使用 Android 和 iOS 中内置的原生 SQLite 库。由于原生平台支持,它体积小,速度快,而且通常更容易将 Java 代码写入 ORM,需要更少的样板代码。
J2ObjC 不支持 JDBC,因为它不是移动应用程序(缓慢、笨重)的糟糕选择,而且数据库供应商不提供 iOS 版本的驱动程序。理论上,您也可以通过移植 JDBC 来移植 Xerial,但这是一项很可能在您的应用程序中执行不佳的任务。 j2objc 团队有一句话适用于此:"just because something can be translated doesn't mean it should be." :-)