2017-05-26 68 views
0

我有一個問題,包裝bazel-remote-worker到可部署的jar。bazel遠程工作者可部署的瓶子不工作

我運行以下命令:

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但即使是openjdk:8這裏面罐子作用相同泊塢窗圖像...

回答

1

顯然我們沒有包裝的本機代碼到部署罐子。我實際上更喜歡重構RemoteWorker以避免大部分Bazel的內部庫,儘管這不太可能發生。您可以將libunix.so與部署jar一起發佈,並適當地設置java.library.path。或者,您可以在構建遠程工作器(bazel-bin/src/tools/remote_worker/remote_worker.runfiles /)後獲取整個runfiles樹。