使用Java10的jaotc编译单个类

使用Java10的jaotc编译单个类,java,aop,java-10,jaotc,Java,Aop,Java 10,Jaotc,我想用jaotc编译一个Java10类文件。虽然我能够构建Java10模块的共享库,但我不知道如何编译单个类。我的类的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/

我想用
jaotc
编译一个Java10类文件。虽然我能够构建Java10模块的共享库,但我不知道如何编译单个类。我的类的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)

有人知道如何正确调用
jaotc
来编译我的类文件吗?

当工具在指定的
搜索路径
文件
(如果在
--jar
参数中指定)中找不到要编译的类时,可能会抛出
NullPointerException

如果你看一下代码的话

其中,如果
classestocomile
为空,则可能引发NPE,只有在指定路径中查找类失败时才会出现这种情况

try {
    foundClasses = lookup.search(this.main.options.files, this.main.options.searchPath);
} catch (InternalError var7) {
    this.main.printer.reportError(var7);
    return null;
}
因此,我建议验证您指定的搜索路径。
我还怀疑为编译器指定类名
net.sweblog.jm18.aot.hw.HelloWorld
,如果我在这里用
javac
进行类比没有错的话,那么编译类或源类都需要一个完整的路径。

您确定应该使用\来定义命令吗?找不到任何关于此的文档。“\”可用于shell脚本或在命令行中忽略换行符。你可以试试你的shell.Disclaimer-这只是一个评论,因为时间太长了,所以移到这里。如果没有帮助,请告诉我,我会删除它。我尝试了所有可能的变体,但问题仍然存在。我找到了正确调用jaotc的方法:cd helloworld/target/classes;jaotc——输出xyz.so——搜索路径--类名net.sweblog.jm18.aot.hw.HelloWorld,因此--search path的正确用法不清楚。
try {
    foundClasses = lookup.search(this.main.options.files, this.main.options.searchPath);
} catch (InternalError var7) {
    this.main.printer.reportError(var7);
    return null;
}