What are the predefined modules in JDK9 or Which module do I need to fix dependency problems?

后端 未结 2 387
名媛妹妹
名媛妹妹 2020-12-18 09:55

JDK9 will (probably) introduce a module system. As part of that, the Java Class Library will get modularized.

This can lead to exceptions when classes don\'t get fou

相关标签:
2条回答
  • how do I find the proper module to include as a dependency?

    Consider this spoof class:

    import java.sql.DriverManager;
    import java.rmi.RemoteException;
    
    public class UserDao {
        DriverManager driverManager = null;
    
        public void service() throws RemoteException {
            if (true) {
                throw new RemoteException();
            }
        }
    }
    

    Let's assume that this class is compiled into user-dao.jar. The jdeps tool is the answer (using 9ea170):

    jdeps --list-deps user-dao.jar
       java.base
       java.rmi
       java.sql
    

    (Note that jdeps shipped with JDK 8 but is much more appropriate in JDK 9.)

    For completeness, if you know that the code uses a specific class (e.g. java.sql.DriverManager) and you suspect a module is required (e.g. java.sql), one could confirm the module via the doc, or on the command-line (again with 9ea170):

    bash$ java --describe-module java.sql
    java.sql@9-ea
    exports java.sql
    exports javax.sql
    exports javax.transaction.xa
    requires java.xml transitive
    requires java.base mandated
    requires java.logging transitive
    uses java.sql.Driver
    
    0 讨论(0)
  • 2020-12-18 10:41

    The complete list of modules is available here. http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html

    It lists 73 modules which will make up the Java Class Library. For each, there is a list of packages included and a list of other modules it depends on.

    Given a class that doesn't get loaded one can search for the start of the package name on that site, in order to determine the module to depend on.

    0 讨论(0)
提交回复
热议问题