2017-06-16 5 views
3

JDK9 introduira (probablement) un système de modules. Dans ce cadre, la bibliothèque de classes Java sera modularisée.Quels sont les modules prédéfinis dans JDK9 ou quel module ai-je besoin pour corriger les problèmes de dépendance?

Cela peut entraîner des exceptions lorsque les classes ne sont pas trouvées car elles se trouvent dans un module qui n'est pas encore spécifié en tant que dépendance.

Quels sont les modules qui seront créés avec le système de modules et quel est leur contenu respectif? Ou indiqué différemment: Étant donné qu'une classe n'est pas chargée, comment trouver le module approprié à inclure en tant que dépendance?

+4

'jdeps --list -deps' – ZhekaKozlov

+1

Je noterai que vous posez plusieurs questions dans le titre, dont la première est hors-sujet (selon [la visite] (https://stackoverflow.com/tour)), puisqu'il s'agit d'une demande de liste de choses. –

Répondre

6

Comment puis-je trouver le module approprié à inclure en tant que dépendance?

Tenir compte de cette classe spoof:

import java.sql.DriverManager; 
import java.rmi.RemoteException; 

public class UserDao { 
    DriverManager driverManager = null; 

    public void service() throws RemoteException { 
     if (true) { 
      throw new RemoteException(); 
     } 
    } 
} 

Supposons que cette classe est compilé dans user-dao.jar. L'outil jdeps est la réponse (en utilisant 9ea170):

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

(Notez que jdeps livré avec JDK 8, mais est beaucoup plus approprié dans le JDK 9.)

Pour être complet, si vous savez que les utilisations de code une classe spécifique (par exemple java.sql.DriverManager) et vous soupçonnez un module est nécessaire (par exemple java.sql), on peut confirmer le module via the doc, ou sur la ligne de commande (à nouveau avec 9ea170):

bash$ java --describe-module java.sql 
[email protected] 
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 
+1

Merci. Mis à jour le lien. –

2

La liste complète des modules est disponible ici. Il répertorie 73 modules qui constitueront la bibliothèque de classes Java. Pour chacun, il y a une liste de paquets inclus et une liste des autres modules dont il dépend. Étant donné qu'une classe n'est pas chargée, il est possible de rechercher le début du nom du paquet sur ce site, afin de déterminer le module dont il dépend.