Java 读取嵌入在JAR文件中的Access数据库
我有一个Java程序,它使用UCanAccess读取Access数据库。当我将程序导出到JAR文件时,我无法读取JAR中的数据库文件 我试过使用Java 读取嵌入在JAR文件中的Access数据库,java,database,ms-access,ucanaccess,Java,Database,Ms Access,Ucanaccess,我有一个Java程序,它使用UCanAccess读取Access数据库。当我将程序导出到JAR文件时,我无法读取JAR中的数据库文件 我试过使用getClass().getResource(“/Database.accdb”).getPath(),但不起作用 如何修复它?您不能直接从嵌入可运行JAR文件中的副本打开数据库文件。UCanAccess要求数据库文件是一个“真实”文件,因此需要从JAR中提取它,然后打开该副本 例如,要将数据库从JAR提取到临时文件中,请执行以下操作: java.io.
getClass().getResource(“/Database.accdb”).getPath()
,但不起作用
如何修复它?您不能直接从嵌入可运行JAR文件中的副本打开数据库文件。UCanAccess要求数据库文件是一个“真实”文件,因此需要从JAR中提取它,然后打开该副本 例如,要将数据库从JAR提取到临时文件中,请执行以下操作:
java.io.File dbFile=java.io.File.createTempFile(“tempdb”,“.accdb”);
dbFile.deleteOnExit();
java.nio.file.Files.copy(
YourClassName.class.getResourceAsStream(“/stuff.accdb”),
dbFile.toPath(),
java.nio.file.StandardCopyOption.REPLACE_(现有);
String connStr=String.format(
“jdbc:ucanaccess://%s;立即删除资源=true”,
dbFile.getAbsolutePath());
连接conn=DriverManager.getConnection(connStr);
不能直接从嵌入可运行JAR文件的副本打开数据库文件。UCanAccess要求数据库文件是一个“真实”文件,因此需要从JAR中提取它,然后打开该副本
例如,要将数据库从JAR提取到临时文件中,请执行以下操作:
java.io.File dbFile=java.io.File.createTempFile(“tempdb”,“.accdb”);
dbFile.deleteOnExit();
java.nio.file.Files.copy(
YourClassName.class.getResourceAsStream(“/stuff.accdb”),
dbFile.toPath(),
java.nio.file.StandardCopyOption.REPLACE_(现有);
String connStr=String.format(
“jdbc:ucanaccess://%s;立即删除资源=true”,
dbFile.getAbsolutePath());
连接conn=DriverManager.getConnection(connStr);
我不确定您是否可以直接从jar中提取数据库并将其存储在磁盘上的某个位置,这样嵌入数据库意味着数据库将是只读的(假设您可以从jar中读取),我不确定您是否可以直接,您可能需要从jar中提取数据库并将其存储在磁盘上的某个位置,这样嵌入它意味着数据库将是只读的(假设您可以从jar中读取)