【问题标题】:Unable to connect to sqlite database - internal error in _syscall()无法连接到 sqlite 数据库 - _syscall() 中的内部错误
【发布时间】:2016-07-11 17:11:46
【问题描述】:

我正在使用 Eclipse Neon、GWT 和 sqlite 编写一个 Web 应用程序。我的 webapp 在某个点连接到位于 war 目录中的数据库(我知道该应用程序只能访问该目录,服务器端)。当我尝试创建连接时:

Class.forName("org.sqlite.JDBC");
return DriverManager.getConnection("jdbc:sqlite:db.db");

控制台出现以下异常:

java.security.AccessControlException: access denied ("java.io.FilePermission" "C:\c:\Users\me\workspace\BookLovers\war\db.db" "read")
[...]
GRAVE: javax.servlet.ServletContext log: Exception while dispatching incoming RPC call
com.google.gwt.user.server.rpc.UnexpectedException: Service method 'public abstract boolean it.me.gc.booklovers.client.LoginService.login(java.lang.String,int) throws java.lang.IllegalArgumentException' threw an unexpected exception: java.lang.Error: Internal Error in _syscall()
[...]
Caused by: java.lang.Error: Internal Error in _syscall()

这是我第一次收到这样的错误,互联网似乎没有注意到这个问题。我无法解释自己的一件事是为什么“C:/”在 db 路径中重复两次;此外,如果异常只是“拒绝访问”,我会理解,但我认为我做得对(我还尝试将 db 移动到 WEB-INF 文件夹中,但无济于事)。

你怎么看?

【问题讨论】:

  • 如果你输入.\db.db会怎样?结果如何?
  • 谢谢你,阿波斯托洛斯。我在 Windows 上运行,所以不确定该语法。但是,我更改了字符串(引用“.\\db.db”),结果是一样的。路径字符串和之前一样:"C:\c:\Users\me\workspace\BookLovers\war\db.db" "read"
  • 确定两件事:您使用的是哪个 xerial jdbc 版本?尝试直接使用完整路径,看看会发生什么。老实说,还没有遇到过这样的事情。
  • 我使用的是 3.7.2,来自java2s.com/Code/JarDownload/sqlite/sqlite-jdbc-3.7.2.jar.zip。打算改成绝对路径,看看有什么变化。
  • 而且,没有变化。即使使用双 C:\ 连接字符串,路径仍然相同:jdbc:sqlite:C:\\users\\me\\workspace\\BookLovers\\war\\db.db

标签: java sqlite gwt web-applications


【解决方案1】:

事实证明,问题似乎是由旧版本的 .jar 连接器引起的。使用更新的连接器解决了这个问题。谢谢你,阿波斯托洛斯。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-29
    • 1970-01-01
    • 2021-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多