Компилировать одиночный класс с jaotc из Java 10 - PullRequest
0 голосов
/ 08 мая 2018

Я хотел бы скомпилировать файл класса 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)

Кто-нибудь знает, как правильно вызвать jaotc для компиляции моего файла класса?

1 Ответ

0 голосов
/ 09 мая 2018

NullPointerException может быть выброшено, если инструмент не найдет классов для компиляции в указанном searchPath или files (если указано в аргументе --jar).

Если вы посмотрите на код в Строка # 135 делает

printer.printInfo(classesToCompile.size() + " classes found");

, где NPE может быть выброшено, если classesToCompile равно нулю, что имеет место только в случае сбоя поиска классов по указанному пути

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, для этого потребуется полный путь либо для скомпилированного, либо для исходного класса.

...