以下简单代码:
Hashtable<String, String> env = new Hashtable();
env.put( "java.naming.factory.initial", "com.sun.jndi.dns.DnsContextFactory" );
DirContext dns = new InitialDirContext( env );
在Java 9中产生以下异常。目前我使用9-ea + 164-jigsaw-nightly。
javax.naming.NoInitialContextException: Cannot instantiate class:
com.sun.jndi.dns.DnsContextFactory [Root exception is java.lang.IllegalAccessException:
class javax.naming.spi.NamingManager (in module java.naming) cannot access
class com.sun.jndi.dns.DnsContextFactory (in module jdk.naming.dns) because module jdk.naming.dns
does not export com.sun.jndi.dns to module java.naming]
at java.naming/javax.naming.spi.NamingManager.getInitialContext(NamingManager.java:719)
at java.naming/javax.naming.InitialContext.getDefaultInitCtx(InitialContext.java:305)
at java.naming/javax.naming.InitialContext.init(InitialContext.java:236)
at java.naming/javax.naming.InitialContext.<init>(InitialContext.java:208)
at java.naming/javax.naming.directory.InitialDirContext.<init>(InitialDirContext.java:101)