JavaプロジェクトはJDK8を使用してJDK 11を使用し、javaxアクティベーションに関連してエラーが発生しました。Oracleからの移行ガイドに従って、 Java.activationそのモジュールはJDK 11から削除されました。
その後、サードパーティ** activation-1.0.2.jar *を追加するよう提案しますが、それでもエラーが発生しましたか?問題についての提案をお願いします。移行ソースコードの使用経験について教えてくださいJava 8 to Java 11(Tomcat 9.0.12を備えたサーバー。Eclipse2018-09によるコンパイラ。 4.9.0)
これは詳細エラーです:
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)
誤ったアーティファクト(external jar)が含まれているようです。
クラスに明示的にアクセスするには、プロジェクトへの外部依存関係としてjavax.activation:javax.activation-api:1.2.0
を含める必要がありますjavax.activation.DataSource
。同じもののサンプルMaven依存関係は次のようになります。
<dependency>
<groupId>javax.activation</groupId>
<artifactId>javax.activation-api</artifactId>
<version>1.2.0</version>
</dependency>
また、ifに注意して、モジュール化コード(module-info.Java
を含む)を使用して、宣言を使用したライブラリへの依存-
requires Java.activation;