Аннотация Java - как изменить AST (Access com.sun.tools.javac.tree Package)?JAVA

Программисты JAVA общаются здесь
Anonymous
Аннотация Java - как изменить AST (Access com.sun.tools.javac.tree Package)?

Сообщение Anonymous »

Я пишу процессор аннотации в качестве доказательства концепции (реализовано как проект Maven). Он обнаруживает классы, аннотированные с помощью моего пользовательского @funnybooleans , которые обменяются всеми флами и наоборот. Я был в состоянии пройти через всю иерархию AST, пока я не обратился к экземпляру LiteralTree , содержащий логическое значение. AST Inferfaces в com.sun.source.tree читаются только. Во время выполнения я вижу, что конкретные реализации поступают от com.sun.tools.javac.tree , и они действительно определяют операции на записи. Похоже, что после Java 9 модуль JDK.compiler явно сохраняет com.sun.tools.javac.tree private.
Я тоже пытался размышлять, но, конечно, я получил незаконное количество. Это хорошо сработало для составления самого процессора аннотации, но, похоже, не оказывает никакого влияния, когда другой модуль пытается, поэтому используйте процессор аннотации: < /p>

Код: Выделить всё


org.apache.maven.plugins
maven-compiler-plugin
${maven-compiler-plugin.version}

17
17
UTF-8

--add-opens=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED
--add-exports=jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED




< /code>
Я вижу, что есть примеры, использующие классы от com.sun.tools.javac.tree. Пример. Я также проверил Ломбока и увидел, что в их исходном коде они также используют его, но я не смогу определить, как (проект довольно сложный). Есть ли какая -то зависимость Maven, которую я должен добавить? Некоторые примеры в Интернете упоминаются зависимость от JDK Lib/Tools.jar 
, но такие примеры, кажется, старые, поскольку эта JAR не существует в современных JDK. Могу ли я получить доступ к com.sun.tools.javac.tree, или получить в свои руки аст каким -то другим?


Подробнее здесь: https://stackoverflow.com/questions/796 ... vac-tree-p

Вернуться в «JAVA»