web-dev-qa-db-fra.com

JDK9: une opération d'accès réflectif illégale s'est produite. org.python.core.PySystemState

J'essaie d'exécuter des programmes DMelt ( http://jwork.org/dmelt/ ) à l'aide de Java9 (JDK9), et des erreurs telles que:

WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.python.core.PySystemState (file:/dmelt/jehep/lib/jython/jython.jar) to method Java.io.Console.encoding()
WARNING: Please consider reporting this to the maintainers of org.python.core.PySystemState
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

Comment puis-je le réparer? J'essayais d'ajouter –illegal-access = permit à la dernière ligne du script "dmelt.sh" (j'utilise bash sous Linux), mais cela n'a pas résolu ce problème. Je suis très frustrant avec ça. J'utilisais ce programme très souvent, pendant très longtemps. Peut-être que je ne devrais jamais passer à JDK9

37
IraS

DMelt semble utiliser Jython et cet avertissement est un problème que les responsables de Jython devront prendre en compte. Il y a un problème à suivre ici: http://bugs.jython.org/issue2582

6
Alan Bateman

Le vrai problème est un problème dans le JDK. Il n'y a pas d'accès illégal, mais la méthode JDK trySetAccessible est erronée. J'espère que cela sera corrigé dans une future version du JDK.

essayez de résoudre ci-dessous answer link

1
Thilina Sampath

Les développeurs de Jython n’ont pas de solution pratique pour jdk9, selon ce post http://bugs.jython.org/issue2582 . L’explication précédente semble très longue pour déterminer ce qui devrait être fait. Je veux juste que jdk9 se comporte exactement comme jdk1.4 - 1.8, c’est-à-dire être totalement silencieux. La force de la JVM en matière de comparabilité arrière. Je suis tout à fait d'accord d'avoir des options supplémentaires dans JDK9, mais les nouvelles fonctionnalités ne peuvent pas endommager les applications

1
IraS

Peut-être que le correctif ci-dessous fonctionne également pour Java 9:

Dans mon cas, la version Java ouverte de jdk était 10.0.2 et a reçu la même erreur (une opération d’accès par réflexion illégale s’est produite). J'ai mis à niveau maven vers la version 3.6.0 sur Linux, et le problème avait disparu. 

0
Rob Lassche