【发布时间】:2019-01-10 03:18:06
【问题描述】:
您好,我正在使用 bazel 构建我的 java 项目。我已经从 maven 迁移到 bazel。一切正常并运行。
项目结构
src/main/
BUILD
java/
Main.java
...
resources/
sqlite.db
...
构建
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 = [...]
)
我的 main.java 中有 String dbLoc = com.google.common.io.Resources.getResource("sqlite.db"),当我打印出 dbLoc 的位置时,我看到了 bazel 将文件构建到的位置。它将文件捆绑到一个 jar 中。
所以当我尝试在运行时java.sql.DriverManager.getConnection("jdbc:sqlite:" + dbLoc) 使用 sqlite.db 文件时,我得到一个异常,表明该文件不存在。
- 如何构建以使 db 文件不捆绑到 jar 文件中?我想这就是找不到文件的原因。我想我必须直接将 db 文件构建到类路径上..
- 否则我在这里做错了什么!在 Maven 中,这很好用...sqlite.db 位于构建后的 targes/ 文件夹中
【问题讨论】:
-
你是如何运行 JAR 的?
-
@Jin 我不知道你的意思是什么
-
你使用的是
bazel run还是java -jar? -
@Jin 是的。我在 intellij ide 中使用 bazel 运行配置
标签: java sqlite build jar bazel