Oli*_*ver 5 java aop java-10 jaotc
我想编译一个Java 10类文件jaotc.虽然我能够构建Java 10模块的共享库,但我无法弄清楚如何编译单个类.我班的FQCN是net.sweblog.jm18.aot.hw.HelloWorld它的完整路径target/classes/net/sweblog/jm18/aot/hw/HelloWorld.class.
所以试着调用jaotc如下:
$ jaotc --output output/helloworld.so \
--search-path helloworld/target/classes/ \
--class-name net.sweblog.jm18.aot.hw.HelloWorld
Error: Failed to find class file: net.sweblog.jm18.aot.hw.HelloWorld
java.lang.NullPointerException
at jdk.aot/jdk.tools.jaotc.Main.run(Main.java:135)
at jdk.aot/jdk.tools.jaotc.Main.run(Main.java:101)
at jdk.aot/jdk.tools.jaotc.Main.main(Main.java:80)
Run Code Online (Sandbox Code Playgroud)
有谁知道如何jaotc正确调用编译我的类文件?
NullPointerException当工具在指定的searchPath或files(如果在--jararg 中指定)中没有找到要编译的类时,可能会抛出 。
如果您查看第 135 行的代码,会发现
printer.printInfo(classesToCompile.size() + " classes found");
Run Code Online (Sandbox Code Playgroud)
如果为 null,则可能会抛出 NPE,classesToCompile只有当在指定路径中查找类失败时才会出现这种情况
try {
foundClasses = lookup.search(this.main.options.files, this.main.options.searchPath);
} catch (InternalError var7) {
this.main.printer.reportError(var7);
return null;
}
Run Code Online (Sandbox Code Playgroud)
因此,我建议验证您指定的搜索路径。我还怀疑向编译器指定类名net.sweblog.jm18.aot.hw.HelloWorld,如果我没有错误地与javac这里进行类比,那么它需要编译类或源类的完整路径。