在项目中存储 JDBC Oracle Wallet

Storing JDBC Oracle Wallet in project

我一直将我的钱包存储在我项目的资源文件夹中,并且能够在 eclipse 中使用以下字符串访问它

final static String DB_URL = "jdbc:oracle:thin:@db_high?TNS_ADMIN="
    + (Database.class.getClassLoader().getResource("Wallet_DB")
        .getPath().replaceFirst("/",""));

然而,当我将它编译成一个 jar,然后从命令行 运行 它时,我得到以下错误:

Exception in thread "main" java.nio.file.InvalidPathException: Illegal
char <:> at index 4:
file:C:/Users/Me/Documents/test.jar!/Wallet_DB\ojdbc.properties

我知道我可以通过将钱包移动到项目外部的 jar 文件旁边并使用相对文件路径访问它来解决这个问题,但是无论如何都可以解决这个问题以便我可以保留罐子里的钱包?

JDBC 只能接受 new File(path) 可以访问的路径。所以这里以"file:..."开头的路径是无效的。

TNS_ADMIN 属性 用于获取tnsnames.ora 文件的绝对路径。所以,尽量使用绝对路径。另外,请注意 windows 和 linux 的文件分隔符。使用 DataSourceSample.java 作为参考。