gpt4 book ai didi

java - 调用 bazel 构建的 java 程序的原始命令行是什么?

转载 作者:行者123 更新时间:2023-12-02 10:15:41 28 4
gpt4 key购买 nike

bazel 构建了 cpp/java 程序并使用非常复杂的 bazel 包装器运行它们。我希望我不依赖这种 bazel 包装器,因为我想要一个干净的运行时/安装包。这是我的“BUILD”中的一个简单的 java 示例

java_binary(
name = "hello",
srcs = ["src/main/java/com/demo/DemoRunner.java"],
main_class = "com.demo.DemoRunner",
deps = [":HelloTest"],
)

java_library(
name = "HelloTest",
srcs = ["src/main/java/com/demo/Hello.java"],
visibility = ["//src/main/java/com/demo/child:__pkg__"],
)

我可以“bazel build hello”和“bazel run hello”,没问题。但是当我尝试时:

# java -classpath bazel-bin/hello.jar com.demo.DemoRunner
Exception in thread "main" java.lang.NoClassDefFoundError: com/demo/Hello
at com.demo.DemoRunner.main(DemoRunner.java:4)
Caused by: java.lang.ClassNotFoundException: com.demo.Hello
at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more

我的要求只是使用原始命令行运行 bazel 构建的 jar。如何纠正我的命令,我想我必须设置一些类路径或环境变量?

请帮忙。非常感谢。

最佳答案

您可能需要 java -jar 隐式 _deploy.jar输出。

$ bazel build//:hello_deploy.jar && java -jar bazel-bin/hello_deploy.jar

关于java - 调用 bazel 构建的 java 程序的原始命令行是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54704724/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com