2017-07-31 7 views
5

J'ai un projet qui utilise la technologie Java webstart. J'ai décidé de mettre à jour la version Java de 8 à 9. Cependant, je faisais face à l'erreur suivante sur la compilation:Le paquet javax.jnlp est déclaré dans le module java.jnlp, qui n'est pas dans le graphique du module

error: package javax.jnlp is not visible 
import javax.jnlp.DownloadServiceListener; 
     ^
(package javax.jnlp is declared in module java.jnlp, which is not in the module graph) 

J'ai essayé d'inclure C:\Program Files\Java\jdk-9\lib\javaws.jar au classpath, mais toujours la même question demeure.

+0

Avez-vous ajouté 'requires javaws;' à votre module-info.java'? Si oui, pourriez-vous ajouter la version de construction et votre fichier module-info.java s'il vous plaît. – nullpointer

+1

@nullpointer Je n'utilisais pas du tout le module-info.java. Tous les autres paquets ont été inclus par défaut sauf 'javaws'. Je pense que la raison derrière ceci est ce que @Nicolai a expliqué dans sa réponse. Quoi qu'il en soit, le problème a été résolu en utilisant des modules. Merci –

Répondre

6

Il semble que java.jnlp n'est pas résolu par défaut pour le code sur le chemin de classe (un peu comme Java EE modules). La solution consiste à l'ajouter explicitement avec --add-modules java.jnlp (les deux javac et java acceptent ce paramètre).

+3

Nicolai est correct, plus de détails dans la section "modules racine" de JEP 261. La question originale a également mentionné lib/javaws.jar - ce fichier JAR est utilisé lorsque JDK 8 ou versions antérieures utilisent les bits de déploiement dans JDK 9, ce n'est pas destiné à être utilisé sur le chemin de la classe. –