Что такое необработанная командная строка для вызова Java-программы, созданной на основе Bazel? - PullRequest
0 голосов
/ 15 февраля 2019

bazel создавал программы cpp / java и запускал их с очень сложной оболочкой bazel.Мне бы хотелось, чтобы я не полагался на этот вид обертки Bazel, потому что я хочу чистый пакет времени выполнения / установки.Вот простой пример Java из моего "BUILD"

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

Мое требование - просто запустить сборку jazel с командной строкой.Как исправить мою команду, я думаю, мне нужно установить некоторые переменные classpath или окружения?

Пожалуйста, помогите.Большое спасибо.

1 Ответ

0 голосов
/ 15 февраля 2019

Возможно, вы захотите java -jar неявный _deploy.jar вывод.

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

...