【发布时间】:2019-06-28 19:15:44
【问题描述】:
我是 bazel 的新手,并且有这个演示项目:
(1)mkdir 演示项目
(2)cd 演示项目
(3)mkdir -p src/main/java/com/demo
(4)vi src/main/java/com/demo/DemoRunner.java
package com.demo;
public class DemoRunner {
public static void main(String args[]) {
Hello.hello();
}
}
(5)vi src/main/java/com/demo/Hello.java
package com.demo;
public class Hello {
public static void hello() {
System.out.println("hello,world");
}
}
(6)vi ~/demo-project/BUILD
java_binary(
name = "hello",
srcs = glob(["**/*.java"]),
main_class = "com.demo.DemoRunner",
)
(7) bazel 构建 //:你好
Starting local Bazel server and connecting to it...
...........
Analyzing: target //:hello (2 packages loaded)
INFO: Analysed target //:hello (15 packages loaded).
INFO: Found 1 target...
Target //:hello up-to-date:
bazel-bin/hello.jar
bazel-bin/hello
INFO: Elapsed time: 60.505s, Critical Path: 1.24s
INFO: 1 process: 1 worker.
INFO: Build completed successfully, 6 total actions
一切似乎都很好,但是当我尝试时
java bazel-bin/hello # Cannot find or load main class bazel-bin.hello
java -jar bazel-bin/hello.jar # Cannot find main list property in bazel-bin/hello.jar
如上所述,两个命令都不成功。那么bazel编译后,如何运行java可执行文件呢?
【问题讨论】:
-
在第 6 步中,在定义
main_class之后是一个额外的逗号吗? (需要吗?还是只是问题上的错字?) -
我只是试图删除它,然后同样的问题。谢谢。
-
你需要运行
bazel-bin/hello或java -cp bazel-bin/hello.jar com.demo.DemoRunner,即使你可以使用bazel run //:hello运行它 -
感谢 Bhavik,这对我有用