Discussions
Categories
- 197.1K All Categories
- 2.5K Data
- 546 Big Data Appliance
- 1.9K Data Science
- 450.8K Databases
- 221.9K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 552 MySQL Community Space
- 479 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3.1K ORDS, SODA & JSON in the Database
- 555 SQLcl
- 4K SQL Developer Data Modeler
- 187.2K SQL & PL/SQL
- 21.4K SQL Developer
- 296.3K Development
- 17 Developer Projects
- 139 Programming Languages
- 293K Development Tools
- 110 DevOps
- 3.1K QA/Testing
- 646.1K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 158 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.2K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 19 Java Essentials
- 162 Java 8 Questions
- 86K Java Programming
- 81 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 205 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 468 LiveLabs
- 39 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 175 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 233 Portuguese
Root module resolution in jdk9

I'm beginning to look at the JDK 9 impact on our source base. I'm trying to understand if we need to use any --add-modules switches for our code.
One example class is com.sun.net.httpserver.HttpServer. This is not in the default root module java.se, but is found at compile and runtime. I assume that this is because of the rule defining that "Every non-java.*
module on the upgrade module path or among the system modules that exports at least one package, without qualification, is also a root." (from JEP 261).
Now if I try using the class with --limit-modules, I get results I do not understand:
$ java --limit-modules=java.se com.sun.net.httpserver.HttpServer
Error: Could not find or load main class com.sun.net.httpserver.HttpServer
Caused by: java.lang.ClassNotFoundException: com.sun.net.httpserver.HttpServer
and
$ java --limit-modules=java.se.ee com.sun.net.httpserver.HttpServer
Error: Main method not found in class com.sun.net.httpserver.HttpServer, please define the main method as:
public static void main(String[] args)
or a JavaFX application class must extend javafx.application.Application
If I run the latter with --show-module-resolution, I see:
bash-4.1$ /usr/java/jdk9/bin/java --limit-modules=java.se.ee --show-module-resolution com.sun.net.httpserver.HttpServer
root jdk.httpserver jrt:/jdk.httpserver
root java.se jrt:/java.se
root jdk.unsupported jrt:/jdk.unsupported
java.se requires java.datatransfer jrt:/java.datatransfer
java.se requires java.xml jrt:/java.xml
...
So my question is - what is different about the java.se.ee module that causes the extra root modules to be available? I cannot see anything in the java.se.ee module-info which would cause this.
Thanks
Richard
Answers
-
Well answering part of my question, I now understand that java.se.ee requires java.xml.ws which requires jdk.httpserver. And this is reported as a root module because it is the class I am trying to execute?