3 votes

Quels sont les modules prédéfinis dans JDK9 ou Quel module dois-je utiliser pour résoudre les problèmes de dépendance ?

Le JDK9 introduira (probablement) un système de modules. Dans le cadre de ce système, la bibliothèque de classes Java sera modularisée.

Cela peut conduire à des exceptions lorsque des classes ne sont pas trouvées parce qu'elles se trouvent dans un module qui n'est pas encore spécifié comme une dépendance.

Quels sont les modules qui seront créés avec le système de modules et quel est leur contenu respectif ?

Ou formulé différemment : Étant donné une classe qui n'est pas chargée, comment puis-je trouver le bon module à inclure comme dépendance ?

6voto

Michael Easter Points 7482

comment trouver le bon module à inclure comme dépendance ?

Considérez cette classe de 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 soit compilée en 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ée avec le JDK 8 mais qui est beaucoup plus appropriée dans le JDK 9).

Pour être complet, si vous savez que le code utilise une classe spécifique (par ex. java.sql.DriverManager ) et vous soupçonnez qu'un module est nécessaire (par ex. java.sql ), on pourrait confirmer le module via le doc ou sur la ligne de commande (toujours avec 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

2voto

Jens Schauder Points 23468

La liste complète des modules est disponible ici. http://cr.openjdk.java.net/~mr/jigsaw/ea/module-summary.html

Il énumère 73 modules qui constitueront la bibliothèque de classes Java. Pour chacun, il y a une liste des paquets inclus et une liste des autres modules dont il dépend.

Si une classe n'est pas chargée, on peut rechercher le début du nom du paquet sur ce site, afin de déterminer le module dont il faut dépendre.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X