Android Studio/gradle 错误消息:无法访问 javax.naming.referenceable 中的可引用
Posted
技术标签:
【中文标题】Android Studio/gradle 错误消息:无法访问 javax.naming.referenceable 中的可引用【英文标题】:Android Studio/gradle error message : cannot access referenceable in javax.naming.referenceable 【发布时间】:2014-12-01 09:23:06 【问题描述】:我是 android Studio 和 gradle 的新手。我有一个在 Eclipse 中部分工作的 android 项目。原始代码使用 Android 中的 derby 数据库。旧代码通过 JDBC 直接连接到 derby 数据库。由于纯粹的懒惰和实用性,我没有将数据库更改为 SQLite。现在我想更改代码以使用 SQLite 而不是 derby,并且我正在将该项目移植到 Android Studio 中。这就是乐趣的开始。当我尝试运行该应用程序时,Gradle 会抛出一个错误,提示“无法访问 javax.naming.referenceable 未找到的可引用类文件”。
Gradle 抱怨的代码如下:
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
【问题讨论】:
【参考方案1】:Android 上的 Derby 存在几个问题,包括缺少命名支持。
请参阅 2010 年 1 月 8 日对 https://issues.apache.org/jira/browse/DERBY-4458 的评论
【讨论】:
完美。感谢您向我指出这个问题。我浏览了您关于 Android 上 Derby 的讨论,我确信我必须将数据库从 Derby 更改为 SQLite。以上是关于Android Studio/gradle 错误消息:无法访问 javax.naming.referenceable 中的可引用的主要内容,如果未能解决你的问题,请参考以下文章
Android Studio Gradle 同步失败 CreateProcess 错误=2
Android Studio Gradle 构建失败。错误:原因:对等方未通过身份验证
Android studio gradle 与 firebase 同步错误:响应 204:No Content 没有内容
Android Studio/gradle 错误消息:无法访问 javax.naming.referenceable 中的可引用