web-dev-qa-db-fra.com

La migration vers JDK 11 comporte une erreur "Java.lang.NoClassDefFoundError: javax / activation / DataSource" (Tomcat 9.0.12)

Je migre Java utilise JDK8 pour utiliser JDK 11, puis une erreur s'est produite concernant l'activation de javax. À la suite du guide de migration d'Oracle, je vois Java.activation dont le module a été supprimé de JDK 11.

Après cela, je donne une suggestion à des tiers ajoutés ** activation-1.0.2.jar * mais une erreur s'est quand même produite? Veuillez donner une suggestion sur le problème? et pourriez-vous me parler de l'expérience d'utilisation du code source de la migration Java 8 to Java 11 (serveur avec compilateur Tomcat 9.0.12. par Eclipse 2018-09 ( 4.9.0)

C'est une erreur de détail:

Caused by: Java.lang.NoClassDefFoundError: javax/activation/DataSource
    at Java.base/Java.lang.Class.getDeclaredMethods0(Native Method)
    at Java.base/Java.lang.Class.privateGetDeclaredMethods(Class.Java:3167)
    at Java.base/Java.lang.Class.getDeclaredMethods(Class.Java:2310)
    at org.Apache.catalina.util.Introspection.getDeclaredMethods(Introspection.Java:133)
    at org.Apache.catalina.startup.WebAnnotationSet.loadMethodsAnnotation(WebAnnotationSet.Java:285)
    at org.Apache.catalina.startup.WebAnnotationSet.loadApplicationServletAnnotations(WebAnnotationSet.Java:138)
    at org.Apache.catalina.startup.WebAnnotationSet.loadApplicationAnnotations(WebAnnotationSet.Java:69)
    at org.Apache.catalina.startup.ContextConfig.applicationAnnotationsConfig(ContextConfig.Java:328)
    at org.Apache.catalina.startup.ContextConfig.configureStart(ContextConfig.Java:768)
    at org.Apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.Java:299)
    at org.Apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.Java:123)
    at org.Apache.catalina.core.StandardContext.startInternal(StandardContext.Java:5007)
    at org.Apache.catalina.util.LifecycleBase.start(LifecycleBase.Java:183)
6
SuperBeam

Vous semblez avoir inclus un artefact incorrect ( pot externe ).

Vous devez inclure javax.activation:javax.activation-api:1.2.0 comme dépendance externe à votre projet pour accéder explicitement à la classe javax.activation.DataSource. Exemple de dépendance maven pour la même chose:

<dependency>
  <groupId>javax.activation</groupId>
  <artifactId>javax.activation-api</artifactId>
  <version>1.2.0</version>
</dependency>

Notez également ( if using code modularized (includes module-info.Java), vous devez indiquer une dépendance à la bibliothèque en utilisant la déclaration -

requires Java.activation;
13
Naman