I migrate my project to JDK 17. Everything works fine besides of one thing:
class org.aldan3.util.TemplateEngine cannot access class sun.nio.fs.UnixPath (in module java.base) because module java.base does not export sun.nio.fs to unnamed module @c12d4d
In my understanding the underline class implementing interface Path, can't be called due limited scope. How can I declare a reflective call using Path interface? Or there is another trick?
Exception:
java.lang.IllegalAccessException: class org.aldan3.util.TemplateEngine cannot access class sun.nio.fs.UnixPath (in module java.base) because module java.base does not export sun.nio.fs to unnamed module @c12d4d at java.base/jdk.internal.reflect.Reflection.newIllegalAccessException(Reflection.java:392) at java.base/java.lang.reflect.AccessibleObject.checkAccess(AccessibleObject.java:674) at java.base/java.lang.reflect.Method.invoke(Method.java:560) at org.aldan3.util.TemplateEngine.processMethodCall(TemplateEngine.java:1731) at org.aldan3.util.TemplateEngine.process(TemplateEngine.java:1397) at org.aldan3.util.TemplateEngine.process(TemplateEngine.java:852) at org.aldan3.util.TemplateEngine.processResource(TemplateEngine.java:259) at org.aldan3.util.TemplateEngine.process(TemplateEngine.java:392) at org.aldan3.util.TemplateEngine.processResource(TemplateEngine.java:259) at org.aldan3.util.TemplateEngine.process(TemplateEngine.java:432) at org.aldan3.util.TemplateEngine.processResource(TemplateEngine.java:259) at org.aldan3.util.TemplateEngine.process(TemplateEngine.java:280) at org.aldan3.servlet.BasePageService.processView(BasePageService.java:381) at org.aldan3.servlet.BasePageService.serve(BasePageService.java:222) at org.aldan3.servlet.FrontController.doRequest(FrontController.java:244) at org.aldan3.servlet.FrontController.service(FrontController.java:159) at javax.servlet.http.HttpServlet.service(HttpServlet.java:790) at rogatkin.web.WebAppServlet$SimpleFilterChain.doFilter(WebAppServlet.java:3599) at rogatkin.web.WebAppServlet$WebAppContextFilter.doFilter(WebAppServlet.java:3219) at rogatkin.web.WebAppServlet$SimpleFilterChain.doFilter(WebAppServlet.java:3571) at rogatkin.web.WebAppServlet.service(WebAppServlet.java:1464) at Acme.Serve.Serve$ServeConnection.runServlet(Serve.java:2407) at Acme.Serve.Serve$ServeConnection.parseRequest(Serve.java:2326) at Acme.Serve.Serve$ServeConnection.run(Serve.java:2110) at Acme.Utils$ThreadPool$PooledThread.run(Utils.java:1238) at java.base/java.lang.Thread.run(Thread.java:833)
Adding an object to a Map and then methods of it will be called using reflection
The problem appeared so interesting, so my friend from Meta, asked if I can show any use case. Sure, I can. A use case