嗨,我是使用bazel构建我的Java项目的。我已经从Maven迁移到bazel。一切正常,运行正常。
项目结构
<Tooltip cursor={{fill: #000000, fillOpacity: 0.1}} />
已构建
src/main/
BUILD
java/
Main.java
...
resources/
sqlite.db
...
我的main.java中有java_binary(
name = "app",
main_class = "com.myapp.Main",
runtime_deps = [":libs"],
)
java_library(
name = "libs",
srcs = glob(["src/main/java/**/*.java"]),
resources = glob(["src/main/resources/**/*"]),
deps = [...]
)
,当我打印出dbLoc的位置时,我看到了bazel将文件构建到的位置。它将文件捆绑到一个jar中。
因此,当我尝试在运行时String dbLoc = com.google.common.io.Resources.getResource("sqlite.db")
使用sqlite.db文件时,出现异常,表明该文件不存在。
答案 0 :(得分:0)
我通过更改
解决了这个问题 java.sql.DriverManager.getConnection("jdbc:sqlite:" + dbLoc)
到
java.sql.DriverManager.getConnection("jdbc:sqlite::resource:" + dbLoc)