테스트 목적으로 SQLite 데이터베이스에 액세스하기 위해 Tomcat과 함께 번들로 제공되는 Liferay 7을 사용하고 있습니다. 데이터베이스는 시스템 계정 "모든 계정"을 절대적으로 제어하는 C :/Eclipse 폴더에있는 빈 "test.db"파일입니다. 따라서 Windows 권한이 문제가되어서는 안됩니다.SQLite 드라이버를 호출 할 때 지속적으로 "IOException : Access Denied"가 발생했습니다.
내 포틀릿의 렌더링 방법에 위치한이 코드는, 어떻게 든 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);
}
T를
작업을 수행하는 코드는 바로 .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가 에서 java.io.File.createNewFile (File.java:1012에서 java.io.WinNTFileSystem.createFileExclusively (기본 방법))에서 denegado 닷컴 .com.liferay.portlet.FilterChainImpl.doFilter (FilterChainImpl.java:103) (많은 , 더 많은 라인. 전형적인 Liferay).
무슨 일입니까? 이 문제를 어떻게 해결할 수 있습니까?
슬래시가있는 연결 URL을 사용해 보셨습니까? 나는 "jdbc : sqlite : C : /Eclipse/test.db"를 의미합니까? –
그런데 stacktrace가 코드와 일치하지 않습니다 :'Conector.test' 메소드에'File.createNewFile' 호출이 없습니다 ... –