bazel运行* _deploy.jar失败,并显示“无法执行二进制文件”

时间:2019-06-13 18:31:36

标签: java macos bazel

给出以下BUILD文件

java_library(
  name='target_lib',
  srcs=['target.java',],
)

java_binary(
  name='target',
  runtime_deps=[':target_lib',],
  main_class='com.example.target',
)

我可以在bazel run //path:target上执行java_binary,并成功执行我的应用程序;但是,在尝试执行bazel run //path:target_deploy.jar时会失败,并显示“无法执行二进制文件”

我正在MacOS上尝试这样做(如果有问题的话)

如果我手动尝试执行java -jar bazel-bin/path/target_deploy.jar,我也会发现清单未指定main_class。不确定是否相关。

挡板版本信息:

$ bazel version
Build label: 0.26.1-homebrew
Build target: bazel-out/darwin-opt/bin/src/main/java/com/google/devtools/build/lib/bazel/BazelServer_deploy.jar
Build time: Thu Jun 6 18:36:29 2019 (1559846189)
Build timestamp: 1559846189
Build timestamp as int: 1559846189

1 个答案:

答案 0 :(得分:0)

这按预期工作。 bazel run实际上并不执行部署jar,而是一个存根脚本,该脚本为目标的依赖关系图确定的jar设置运行时环境。如果您将文件标签(例如//x/y:deploy.jar)传递给bazel run,Bazel将尝试以无java -jar的独立二进制文件的形式执行它。