簡體   English   中英

assets folder is not accessible in java class Tomcat Web Project Built in Maven

[英]assets folder is not accessible in java class Tomcat Web Project Built in Maven

我試圖在項目的不同位置創建資產文件夾,並且其中有 MS Access DB 文件。 我想使用 ucanaccess 驅動程序訪問它。 但它給出了文件未找到異常。

數據庫連接代碼。

 public static Statement getConnectionStatement(){
    try {
        Class.forName("net.ucanaccess.jdbc.UcanaccessDriver");

        String url = "jdbc:ucanaccess://.\\assets\\BC190201004.accdb";

        connection = DriverManager.getConnection(url);

        return connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
                ResultSet.CONCUR_UPDATABLE);
    } catch (ClassNotFoundException | SQLException e) {
        e.printStackTrace();
        return null;
    }
}

但是使用此代碼,它工作正常

        String url = "jdbc:ucanaccess://C:\\Users\\kha33\\NetBeansProjects\\CS506-Assignment-3\\src\\main\\webapp\\WEB-INF\\assets\\BC190201004.accdb";

我嘗試將 assets 文件夾放在項目主文件夾、java 文件夾、webapp 文件夾和 WEB-INF 文件夾下。

我也試過 NetBeans IDE。

用於訪問文件的路徑.\assets\BC190201004.accdb是相對於 Tomcat 進程的工作目錄的。 這通常是$CATALINA_BASE ,但可以是任何東西(尤其是在 IDE 下)。

您應該以更穩定的方式提供路徑,例如使用ServletContext#getRealPath()

public static Statement getConnectionStatement(ServletContext ctx){
    ...
    final String realPath = ctx.getRealPath("/WEB-INF/assets/BC190201004.accdb");
    final String url = "jdbc:ucanaccess://" + realPath;
    ...
}

顯然,如果您的 Tomcat 不解壓縮 WAR,這將失敗。 但是,這種情況並不常見。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM