java - bazel 远程工作人员可部署 jar 不工作

标签 java build bazel

我在打包时遇到问题 bazel-remote-worker放入可部署的 jar 中。

我运行了以下命令:

bazel build//src/tools/remote_worker:remote_worker_deploy.jar

但是当我尝试运行 jar 时,我收到此错误:

➜  bazel git:(master) ✗ java -jar remote_worker_deploy.jar --work_path=/tmp/test --listen_port=3030
*** Initializing in-memory cache server.
*** Not using remote cache. This should be used for testing only!
Exception in thread "main" java.lang.UnsatisfiedLinkError: no unix in java.library.path
    at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1867)
    at java.lang.Runtime.loadLibrary0(Runtime.java:870)
    at java.lang.System.loadLibrary(System.java:1122)
    at com.google.devtools.build.lib.UnixJniLoader.loadJni(UnixJniLoader.java:28)
    at com.google.devtools.build.lib.unix.NativePosixFiles.<clinit>(NativePosixFiles.java:136)
    at com.google.devtools.build.lib.unix.UnixFileSystem.createDirectory(UnixFileSystem.java:309)
    at com.google.devtools.build.lib.vfs.Path.createDirectory(Path.java:829)
    at com.google.devtools.build.lib.vfs.FileSystemUtils.createDirectoryAndParentsWithCache(FileSystemUtils.java:692)
    at com.google.devtools.build.lib.vfs.FileSystemUtils.createDirectoryAndParents(FileSystemUtils.java:652)
    at com.google.devtools.build.remote.RemoteWorker.<init>(RemoteWorker.java:114)
    at com.google.devtools.build.remote.RemoteWorker.main(RemoteWorker.java:621)

启动它的唯一方法是从 bazel-bin 运行可执行文件:

bazel-bin/src/tools/remote_worker/remote_worker --work_path=/tmp/test --listen_port=3030

我正在 mac osx sierra 上运行最新的 bazel(当前为 a3e26835890a543ff84cce90c879f9196ae06348)。

我使用 oracle-jdk-1.8.131openjdk-1.8.91 进行了尝试,其行为相同。

最终目标是创建一个运行此 jar 的 docker 镜像,但即使在 openjdk:8 内,此 jar 的行为也是相同的...

最佳答案

显然我们没有将 native 代码打包到部署 jar 中。实际上,我更愿意重构 RemoteWorker 以避免使用 Bazel 的大部分内部库,尽管这不太可能很快发生。您可以将 libunix.so 与部署 jar 一起发送并适本地设置 java.library.path 。或者,您可以在构建远程工作程序后获取整个运行文件树(bazel-bin/src/tools/remote_worker/remote_worker.runfiles/)。

关于java - bazel 远程工作人员可部署 jar 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44201978/

相关文章:

gradle - 使用来自单独的Gradle脚本的插件

python-3.x - python文件不读取bazel中的文件夹

java - 如何在谷歌地图中绘制gpx文件

java - Gradle 构建错误 "Configuration with name ' 默认未找到。”

java - 从已执行的变量或从不同的 void 中获取变量

c++ - 编译用于ARM64-v8a的Tensorflow C++ API

c++ - 我们如何使用 Google bazel 运行单个测试

java - java中如何共享符号?

java - 解决 "introduces to cycle in the graph"maven 异常

iphone - 如何在 Xcode 中减少构建时间/加快编译时间?