猿问

在 docker 中运行的 Spring Boot SOAP 服务找不到

我正在使用 spring-boot 设置 SOAP 服务,并在 docker 容器中运行它。当我单独运行jar时,一切正常,但是当我尝试在docker容器中运行它时,它无法初始化并抛出以下错误:


Failed to instantiate [org.springframework.ws.wsdl.wsdl11.Wsdl11Definition]: Factory method 'defaultWsdl11Definition' threw exception; 

nested exception is java.lang.NoClassDefFoundError: javax/wsdl/extensions/ExtensibilityElement

我已经尝试了不同的镜像,还创建了一个基本的docker镜像,并手动安装oracle jdk。


您可以在此处找到确切的代码并自己尝试。


要运行应用,请执行以下操作:


gradle build

java -jar build/libs/service-0.0.1-SNAPSHOT.jar

要创建 docker 映像,请执行以下操作:


docker build -t soap:service --build-arg JAR_FILE=./build/libs/service-0.0.1-SNAPSHOT.jar .

运行 Docker 映像:


docker run soap:service

任何帮助是值得赞赏的。


子衿沉夜
浏览 79回答 1
1回答

阿晨1998

如果有人想知道,问题是 wsdl4j 库被设置为在 compileOnly 上,并且通过更改它来编译库,该库呈现在最终的 jar 上。有关更多信息,请访问 https://community.liferay.com/blogs/-/blogs/gradle-compile-vs-compileonly-vs-compileinclude
随时随地看视频慕课网APP

相关分类

Java
我要回答