L' idéal façon de résoudre ce problème serait de
déclaration ce de la les responsables de org.python.de base.PySystemState
et en leur demandant de fixer de tels réfléchissant accès à l'avenir.
Si le mode par défaut de permis illégal réfléchissant accès, cependant, alors
il est essentiel d'en faire part afin que les gens ne sont pas surpris quand
ce n'est plus le mode par défaut dans une version future.
À partir de l'un des fils de discussion sur la liste de diffusion :
--illegal-access=permit
Ce sera la valeur par défaut du mode de JDK 9. Il ouvre le paquet dans
chaque explicite module de code dans tous les modules sans nom, c'est à dire, le code sur
le chemin de classe, tout comme --permit-illegal-access
aujourd'hui.
La première illégal de réflexion accès opération provoque un avertissement
émettre, avec --permit-illegal-access
, mais aucun avertissement n'est émis
après ce point. Ce simple avertissement décrit comment activer
d'autres avertissements.
--illegal-access=deny
Cela désactive toutes illégales de réflexion opérations d'accès, sauf pour
ceux activés par d'autres options de ligne de commande, comme --add-opens
.
Cela devient la valeur par défaut mode dans une version future.
Les messages d'avertissement dans n'importe quel mode peut être évité, comme auparavant, par l'utilisation judicieuse de l' --add-exports
et --add-opens
options.
D'où un courant de solution temporaire consiste à utiliser --add-exports
que la VM arguments comme indiqué dans les docs :
--add-exports module/package=target-module(,target-module)*
Les mises à jour du module d' export
package target-module
, indépendamment de
module de déclaration. L' target-module
peut être sans nom à l'exportation pour
tous les modules sans nom.
Cela permettrait à l' target-module
d'accéder à tous types de public, en package
. Dans le cas où vous souhaitez accéder à la jdk classes internes qui serait encore encapsulé, vous avez pour permettre une réflexion en profondeur à l'aide de l' --add-opens
argument:
--add-opens module/package=target-module(,target-module)*
Les mises à jour du module d' open
package target-module
, quel que soit le module
de la déclaration.
Dans votre cas, à l'accès à l' java.io.Console
, vous pouvez simplement ajouter en tant que machine virtuelle option -
--add-opens java.base/java.io=ALL-UNNAMED
Aussi, la note de la même fil que ci-dessus
Lors de l' deny
devient le mode par défaut puis-je espérer permit
de rester appuyé pour au moins l'une de libération, afin que les développeurs peuvent continuer à migrer leur code. L' permit
, warn
, et debug
modes, au fil du temps, être supprimé, de même que l' --illegal-access
option elle-même.
Il est donc préférable de changer la mise en œuvre et de suivre la solution idéale pour elle.