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.DemoRunnerException 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。如何更正我的命令,我想我必須設置一些類路徑或環境變量?請幫助。非常感謝。
1 回答

吃雞游戲
TA貢獻1829條經驗 獲得超7個贊
您可能想要java -jar
隱式_deploy.jar
輸出。
$ bazel build //:hello_deploy.jar && java -jar bazel-bin/hello_deploy.jar
.
添加回答
舉報
0/150
提交
取消