我正在嘗試使用 OrmLite 連接到 SQLite 資料庫(不是 android)。我已閱讀檔案,我相信我的代碼是正確的,但在嘗試運行時出現運行時錯誤。我正在使用 Maven 匯入依賴項。
這是我的代碼:
import java.sql.SQLException;
import com.j256.ormlite.dao.Dao;
import com.j256.ormlite.dao.DaoManager;
import com.j256.ormlite.jdbc.JdbcConnectionSource;
import com.j256.ormlite.support.ConnectionSource;
public class AddressBook {
public static void main(String[] args) throws SQLException {
// Create connection source
ConnectionSource connectionSource = new JdbcConnectionSource("jdbc:sqlite:database.db");
Dao<Person, Integer> personDao = DaoManager.createDao(connectionSource, Person.class);
Dao<Business, Integer> businessDao = DaoManager.createDao(connectionSource, Business.class);
Dao<Email, Integer> emailDao = DaoManager.createDao(connectionSource, Email.class);
Dao<Phone, Integer> phoneDao = DaoManager.createDao(connectionSource, Phone.class);
}
}
這是我的 Maven POM 檔案的依賴項部分:
<dependencies>
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.36.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-core -->
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-core</artifactId>
<version>4.48</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-jdbc -->
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-jdbc</artifactId>
<version>5.6</version>
</dependency>
</dependencies>
我正在嘗試在 Eclipse 中運行該程式。我檢查了運行配置,它在依賴項選項卡的類路徑中顯示了 Maven 依賴項。這是我在 Eclipse 中運行時遇到的錯誤:
Exception in thread "main" java.lang.NoClassDefFoundError: com/j256/ormlite/field/converter/BooleanNumberFieldConverter
at com.j256.ormlite.jdbc.db.SqlServerDatabaseType.<clinit>(SqlServerDatabaseType.java:31)
at com.j256.ormlite.jdbc.db.DatabaseTypeUtils.<clinit>(DatabaseTypeUtils.java:31)
at com.j256.ormlite.jdbc.BaseJdbcConnectionSource.initialize(BaseJdbcConnectionSource.java:102)
at com.j256.ormlite.jdbc.JdbcConnectionSource.<init>(JdbcConnectionSource.java:104)
at com.j256.ormlite.jdbc.JdbcConnectionSource.<init>(JdbcConnectionSource.java:47)
at dev.website.addressbook.AddressBook.main(AddressBook.java:19)
Caused by: java.lang.ClassNotFoundException: com.j256.ormlite.field.converter.BooleanNumberFieldConverter
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:520)
... 6 more
有任何想法嗎?
uj5u.com熱心網友回復:
Exception in thread "main" java.lang.NoClassDefFoundError通常當你有一個發生時Class A試圖訪問Class B和Class B不可用classpath。簡單地說,在Class A你有:
import com.company.ClassB;
class A {
}
然后在 的jar中Class B,Class B那里不再可用。
在您的情況下,這是ormlite-core和之間的版本不兼容ormlite-jdbc。該班SqlServerDatabaseType在ormlite-jdbc尋找類BooleanNumberFieldConverter中ormlite-core這是在版本不再可用4.48的ormlite-core。
要解決您的問題,您必須將 的版本更改ormlite-core為5.6。
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-core</artifactId>
<version>5.6</version>
</dependency>
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-jdbc</artifactId>
<version>5.6</version>
</dependency>
uj5u.com熱心網友回復:
我只是想通了。
當我匯入 ormlite-core 和 ormlite-jdbc 時,我匯入了它們的不同版本。我在我的 Maven POM 中將它更改為相同版本并糾正了問題!
這就是我將 Maven POM 依賴項更改為:
<dependencies>
<!-- https://mvnrepository.com/artifact/org.xerial/sqlite-jdbc -->
<dependency>
<groupId>org.xerial</groupId>
<artifactId>sqlite-jdbc</artifactId>
<version>3.36.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-core -->
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-core</artifactId>
<version>5.6</version>
</dependency>
<!-- https://mvnrepository.com/artifact/com.j256.ormlite/ormlite-jdbc -->
<dependency>
<groupId>com.j256.ormlite</groupId>
<artifactId>ormlite-jdbc</artifactId>
<version>5.6</version>
</dependency>
</dependencies>
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/345391.html
