Java 我怎样才能让Bazel包含一个用于不同于主机的体系结构的JRE?

Java 我怎样才能让Bazel包含一个用于不同于主机的体系结构的JRE?,java,bazel,Java,Bazel,我希望能够使用Bazel将Java应用程序从linux工作站交叉编译到Raspberry Pi 我遇到的基本问题似乎是,生成的启动脚本引用了runfiles目录中的java启动器,并基于主机对其进行了二进制编译 简单地设置CPU到ARMEABIV-V7A似乎没有任何效果,即使我可以使用Clinux工具来获得跨C++的二进制文件,但是我找不到任何文档来告诉我如何类似地替换java工具。 我花了一些时间摆弄java_运行时、java_运行时套件和java_工具链规则,但遇到了这样一个问题:虽然我可以

我希望能够使用Bazel将Java应用程序从linux工作站交叉编译到Raspberry Pi

我遇到的基本问题似乎是,生成的启动脚本引用了runfiles目录中的java启动器,并基于主机对其进行了二进制编译

简单地设置CPU到ARMEABIV-V7A似乎没有任何效果,即使我可以使用Clinux工具来获得跨C++的二进制文件,但是我找不到任何文档来告诉我如何类似地替换java工具。 我花了一些时间摆弄java_运行时、java_运行时套件和java_工具链规则,但遇到了这样一个问题:虽然我可以设置java_工具链,但我似乎无法独立调整主机和目标java体系结构—只调整版本

如果我将Java启动程序脚本和硬代码JAVABIN修改为“/usr/bin/Java”,一切正常(示例GPRC“greeter server”响应正确),那么我觉得我离可用的设置还不远。我意识到我可以提供一个只将所有内容传递到/usr/bin/java的启动器,但是我喜欢Bazel构建的自包含特性,并且更喜欢在其结构内部工作

那么,我错过了什么?使用Bazel交叉编译Java的正确/预期方法是什么?

您可以使用--javabase参数指定用于目标配置(Raspberry Pi)的JVM,使用--host_javabase参数指定在构建过程中使用的JVM


如果您将--javabase指向一个java_运行时规则,该规则告诉您JVM在Raspberry PI上的位置,那么它应该可以工作。

Ha!我甚至想过根据构建的结果调用--javabase,但我没有想到在bazel调用中调用它。谢谢