2017-10-17 147 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

訪問被拒絕在文件系統級別,所以這是不可能的錯誤的原因。 –

相關問題