Hi, I am working on the Spring Boot project[1] and I am trying to make sure our codebase compiles with the current JDK9 build[2]. So far I've hit two major issues:
We use "sun.misc.VMSupport" to retrieve the port being used by the Java remote debugging. You can find the actual code in RemoteDebugPortProvider[3] We have an annotation processor that inspects all classes annotated with @ConfigurationProperties and generates some meta-data about them. One important piece of this is to extract the default value assigned to fields. Consider the following example @ConfigurationProperties public class Foo { private static final String DEFAULT_NAME = "name"; private String name = DEFAULT_NAME; private Integer counter = 42; private List<String> hosts = Collections.singletonList("localhost"); } What we've build is a visitor that navigates to those elements and extracts the default values assigned to each field, including navigating to parent element (the "name" constant there) or inferring value from method parameters ("localhost"). The current code relies on a feature of the JDK that is no longer exported[4]: java.lang.IllegalAccessException: class org.springframework.boot.configurationprocessor.fieldvalues.javac.Trees cannot access class com.sun.tools.javac.api.JavacTrees (in module jdk.compiler) because module jdk.compiler does not export com.sun.tools.javac.api to unnamed module @5a7fe64 <https://github.com/spring-projects/spring-boot/commit/5a7fe64f> Does anybody has some insight as how we could migrate those two use cases? In particular, the second use case could be implemented with a contract of javax.lang.model but we haven't found how to do it. Thank you, S. [1] https://github.com/spring-projects/spring-boot [2] https://github.com/spring-projects/spring-boot/issues/7226 [3] https://github.com/spring-projects/spring-boot/blob/master/spring-boot-devtools/src/main/java/org/springframework/boot/devtools/tunnel/server/RemoteDebugPortProvider.java [4] https://github.com/spring-projects/spring-boot/blob/master/spring-boot-tools/spring-boot-configuration-processor/src/main/java/org/springframework/boot/configurationprocessor/fieldvalues/javac/Trees.java