2017-10-17 70 views
0

我试图将与Liferay 7捆绑在一起的Tomcat访问SQLite数据库进行测试。该数据库是一个空的“test.db”文件,位于C:/ Eclipse,该文件夹对系统帐户“所有帐户”具有绝对控制权。所以Windows权限不应该成为问题。当尝试调用SQLite驱动程序时不断获得“IOException:访问被拒绝”

此代码,位于我的portlet的渲染方法,不知何故,抛出IOException:

@Override 
public void render(RenderRequest arg0, RenderResponse arg1) throws IOException, PortletException { 
    try { 
     Conector.test(); 
    } catch (ClassNotFoundException e) { 
     // TODO Auto-generated catch block 
     System.out.println("ERROR SQLITE: "+e.getMessage()); 
    } 
    super.render(arg0, arg1); 
} 

牛逼

执行任务的代码只是试图访问.db文件,创建一些表格并执行一个查询,正好看到这一切连接,所以我能够做的事情进一步,是这样的:

public static void test() throws ClassNotFoundException 
    { 
     /** 
     * Connect to a sample database 
     */ 

      Connection conn = null; 
      try { 
       Class.forName("org.sqlite.JDBC"); 
       // db parameters 
       String url = "jdbc:sqlite:C:\\Eclipse\\test.db"; 
       // create a connection to the database 
       conn = DriverManager.getConnection(url); 

       System.out.println("Connection to SQLite has been established."); 

      } catch (SQLException e) { 
       System.out.println(e.getMessage()); 
      } finally { 
       try { 
        if (conn != null) { 
         conn.close(); 
        } 
       } catch (SQLException ex) { 
        System.out.println("Internal sqlite error: "+ex.getMessage()); 
       } 
      } 

    } 

但不知何故,我不断收到此错误(水疗光洁度模式):

java.io.IOException的:Acceso denegado在 java.io.WinNTFileSystem.createFileExclusively(本机方法)在 java.io.File.createNewFile(File.java:1012)在 COM .db.Conector.test(Conector.java:24)at com.test.PortletMVC.render(PortletMVC.java:25)at com.liferay.portlet.FilterChainImpl.doFilter(FilterChainImpl.java:103) (many ,还有更多的线路。典型的Liferay)。

发生了什么事?我怎样才能解决这个问题?

+0

您是否尝试过使用斜杠的连接URL?我的意思是“jdbc:sqlite:C:/Eclipse/test.db”? –

+0

顺便说一句,你的堆栈跟踪代码不匹配:你的'Conector.test'方法中没有'File.createNewFile'调用... –

回答

0

你需要给它用户名和密码。使用DriverManager.getConnection(url,YOUR_USERNAME,YOUR_PASSWORD)

+0

访问被拒绝在文件系统级别,所以这是不可能的错误的原因。 –

相关问题