gpt4 book ai didi

java - Android Studio/gradle错误消息: cannot access referenceable in javax.naming.referenceable

转载 作者:行者123 更新时间:2023-12-01 12:11:52 49 4
gpt4 key购买 nike

我是 Android Studio 和 gradle 的新手。我有一个 Android 项目,部分在 Eclipse 中工作。原始代码在Android中使用derby数据库。旧代码通过 JDBC 直接连接到 derby 数据库。由于纯粹的懒惰和实用性,我没有将数据库更改为 SQLite。现在我想更改代码以使用 SQLite 而不是 derby,而且我正在将该项目移植到 Android Studio 中。这就是乐趣的开始。当我尝试运行该应用程序时,Gradle 抛出一个错误,指出“无法访问未找到 javax.naming.referenceable 的可引用类文件”。

这是 Gradle 提示的代码 fragment :

package net.jxta.impl.cm.sql;

import java.io.IOException;
import java.net.URI;
import java.sql.SQLException;

import net.jxta.impl.util.threads.TaskManager;

import org.apache.derby.jdbc.EmbeddedConnectionPoolDataSource;
import org.apache.derby.jdbc.EmbeddedDataSource;


public class DerbyAdvertisementCache extends JdbcAdvertisementCache {

public DerbyAdvertisementCache(URI storeRoot, String areaName, TaskManager taskManager) throws IOException {
super(storeRoot, areaName, taskManager);
}

public DerbyAdvertisementCache(URI storeRoot, String areaName, TaskManager taskManager, long gcinterval, boolean trackDeltas) throws IOException {
super(storeRoot, areaName, taskManager, gcinterval, trackDeltas);
}

@Override
protected EmbeddedConnectionPoolDataSource createDataSource() {
if(!loadDbDriver( "org.apache.derby.jdbc.EmbeddedDriver")) {
throw new RuntimeException("Unable to loadDB driver: org.apache.derby.jdbc.EmbeddedDriver");
}
EmbeddedConnectionPoolDataSource dataSource = new EmbeddedConnectionPoolDataSource();
dataSource.setDatabaseName(dbDir.getAbsolutePath());
dataSource.setCreateDatabase("create");
System.err.println("Created derby cache");
return dataSource;
}

@Override
protected void shutdownDb() throws SQLException {
// annoyingly, shutting down a derby instance involves catching an exception
// and checking error codes to make sure it shut down "normally"

try {
EmbeddedDataSource dataSource = new EmbeddedDataSource();
dataSource.setDatabaseName(dbDir.getAbsolutePath());
dataSource.setShutdownDatabase("shutdown");
dataSource.getConnection();
} catch(SQLException e) {
// make sure we get the correct error codes
if(e.getErrorCode() != 45000 || !"08006".equals(e.getSQLState())) {
throw e;
}
}
}

}

你们能帮我吗?谢谢d

最佳答案

Android 上的 Derby 存在几个问题,包括缺乏命名支持。

请参阅 2010 年 1 月 8 日对 https://issues.apache.org/jira/browse/DERBY-4458 的评论

关于java - Android Studio/gradle错误消息: cannot access referenceable in javax.naming.referenceable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27225187/

49 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com