我試圖將與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)。
發生了什麼事?我怎樣才能解決這個問題?
您是否嘗試過使用斜槓的連接URL?我的意思是「jdbc:sqlite:C:/Eclipse/test.db」? –
順便說一句,你的堆棧跟蹤代碼不匹配:你的'Conector.test'方法中沒有'File.createNewFile'調用... –