Bazel:带有sqlite.db的Java资源文件夹

时间:2018-08-02 11:08:14

标签: java sqlite build jar bazel

嗨,我是使用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文件时,出现异常,表明该文件不存在。

  1. 如何构建不将db文件捆绑到jar文件中的方式?我想这就是为什么找不到文件的原因。我想我必须直接将db文件构建到类路径上。
  2. 否则我在这里做错了!在Maven中可以正常工作... sqlite.db是构建后targes /文件夹中的位置

1 个答案:

答案 0 :(得分:0)

我通过更改

解决了这个问题

java.sql.DriverManager.getConnection("jdbc:sqlite:" + dbLoc)

java.sql.DriverManager.getConnection("jdbc:sqlite::resource:" + dbLoc)