web-dev-qa-db-ja.com

java.lang.NoClassDefFoundError:wsimport Intellij上のjavax / activation / DataSource Java 9

jDK-9を使用して、Intellij-Idea 2017.2.5(Webサービス-> wsdlからコードを生成...)でWSDLのクラススタブを生成しようとしています

この例外が発生しているので、「-add-modules Java.activation」を渡して操作を完了するようにintellijに指示する方法を疑問に思います。

(私はコマンドラインからwsimportを実行する必要があると思います...)

Exception in thread "main" Java.lang.NoClassDefFoundError: javax/activation/DataSource
    at com.Sun.xml.bind.v2.model.impl.RuntimeBuiltinLeafInfoImpl.<clinit>(RuntimeBuiltinLeafInfoImpl.Java:461)
    at com.Sun.xml.bind.v2.model.impl.RuntimeTypeInfoSetImpl.<init>(RuntimeTypeInfoSetImpl.Java:65)
    at com.Sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.Java:133)
    at com.Sun.xml.bind.v2.model.impl.RuntimeModelBuilder.createTypeInfoSet(RuntimeModelBuilder.Java:85)
    at com.Sun.xml.bind.v2.model.impl.ModelBuilder.<init>(ModelBuilder.Java:156)
    at com.Sun.xml.bind.v2.model.impl.RuntimeModelBuilder.<init>(RuntimeModelBuilder.Java:93)
    at com.Sun.xml.bind.v2.runtime.JAXBContextImpl.getTypeInfoSet(JAXBContextImpl.Java:455)
    at com.Sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.Java:303)
    at com.Sun.xml.bind.v2.runtime.JAXBContextImpl.<init>(JAXBContextImpl.Java:142)
    at com.Sun.xml.bind.v2.runtime.JAXBContextImpl$JAXBContextBuilder.build(JAXBContextImpl.Java:1174)
    at com.Sun.tools.xjc.reader.xmlschema.bindinfo.BindInfo.getJAXBContext(BindInfo.Java:335)
    at com.Sun.tools.xjc.reader.internalizer.SCDBasedBindingSet.apply(SCDBasedBindingSet.Java:235)
    at com.Sun.tools.xjc.ModelLoader.createXSOM(ModelLoader.Java:541)
    at com.Sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.Java:269)
    at com.Sun.tools.xjc.api.impl.s2j.SchemaCompilerImpl.bind(SchemaCompilerImpl.Java:95)
    at com.Sun.tools.ws.processor.modeler.wsdl.JAXBModelBuilder.bind(JAXBModelBuilder.Java:142)
    at com.Sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildJAXBModel(WSDLModeler.Java:2244)
    at com.Sun.tools.ws.processor.modeler.wsdl.WSDLModeler.internalBuildModel(WSDLModeler.Java:191)
    at com.Sun.tools.ws.processor.modeler.wsdl.WSDLModeler.buildModel(WSDLModeler.Java:137)
    at com.Sun.tools.ws.wscompile.WsimportTool.buildWsdlModel(WsimportTool.Java:391)
    at com.Sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.Java:204)
    at com.Sun.tools.ws.wscompile.WsimportTool.run(WsimportTool.Java:179)
    at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
    at Java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.base/Java.lang.reflect.Method.invoke(Method.Java:564)
    at com.Sun.tools.ws.Invoker.invoke(Invoker.Java:135)
    at com.Sun.tools.ws.WsImport.main(WsImport.Java:57)
Caused by: Java.lang.ClassNotFoundException: javax.activation.DataSource
    at Java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.Java:582)
    at Java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.Java:185)
    at Java.base/Java.lang.ClassLoader.loadClass(ClassLoader.Java:496)
    ... 28 more
14
George

エラーメッセージに基づいて、pom.xmlに次の依存関係を追加する必要があります。

<dependency>
    <groupId>javax.activation</groupId>
    <artifactId>activation</artifactId>
    <version>1.1.1</version>
</dependency>

SDK 9から、JAXBがWebサービスで機能するためには、SDKの一部ではないため、まだ持っていない場合、次の依存関係も必要です。

<dependency>
    <groupId>javax.xml.bind</groupId>
    <artifactId>jaxb-api</artifactId>
    <version>2.3.0</version>
</dependency>

<dependency>
    <groupId>com.Sun.xml.bind</groupId>
    <artifactId>jaxb-core</artifactId>
    <version>2.3.0</version>
</dependency>

<dependency>
   <groupId>com.Sun.xml.bind</groupId>
   <artifactId>jaxb-impl</artifactId>
   <version>2.3.0</version>
</dependency>
13
Sameer Khanal

役に立つと思います。 Java 8から10への切り替え時に、soapプロジェクトにこれらの追加パッケージがあります。

compile "javax.xml.bind:jaxb-api:2.3.0"
compile "javax.activation:activation:1.1"
compile "com.Sun.xml.bind:jaxb-impl:2.3.0"
compile "com.Sun.xml.bind:jaxb-core:2.3.0"
compile "com.Sun.xml.ws:rt:2.3.0"
compile "com.Sun.xml.ws:jaxws-rt:2.3.0"
3
Svetopolk

ここに来る同じ例外を持っている他の人々のためだけに:

この問題は、TomcatなどのWebサーバーを使用している場合や、アクティベーションjarもそこに存在する必要がある場合にも発生する可能性があります。可能な解決策の1つは、Tomcatのlibフォルダーに配置する(またはcommon.loader機能を使用する)ことです。

1
Markus Barthlen