Java 11和spring boot从spring boot应用程序的fat jar中的依赖项jar加载资源
我在将代码从Java 8升级到Java 11时遇到了问题
我有一个spring boot应用程序,这个应用程序打包成一个胖罐子。该应用程序还依赖于ebay api,该api打包在ebay-sdk-core-1131.jar
文件中
上述配置在Oracle Java 8中运行良好。现在我尝试使用zulu open JDK 11,我得到了一个例外:
[INFO ] 2020-12-28 12:41:34.997 [ForkJoinPool-1-worker-3] SdkAPIInterfaceServiceLocator - loading wsdl : jar:file:/home/my-application-1.0.jar!/BOOT-INF/lib/ebay-sdk-core-1131.jar!/eBaySvc.wsdl
[ERROR] 2020-12-28 12:41:35.003 [ForkJoinPool-1-worker-3] ApiCall - java.lang.NullPointerException
事实上,我在其他依赖项库中有其他wsdl文件,它们都未能在Java11中加载。它们在Java8中都是正常的
这将在java 11中引入NPE,而不是java 8(作为胖jar运行):
import org.springframework.core.io.ClassPathResource;
ClassPathResource cp = new ClassPathResource("/wsdl/wsdl.xml");
Spring boot位于2.3.7.RELEASE
有什么想法吗
更新:
忘了提到上面的内容是从docker容器中运行的
如果我在我的开发机器上本地运行它(不是胖spring jar,而是文件系统),它可以工作:
[INFO ] 2020-12-28 09:04:03.153 [ForkJoinPool-1-worker-3] SdkAPIInterfaceServiceLocator - loading wsdl : jar:file:/home/me/work/git/app/app-dao.jar/libs/ebay-sdk-core-1131.jar!/eBaySvc.wsdl
[INFO ] 2020-12-28 09:04:26.127 [ForkJoinPool-1-worker-3] SdkAPIInterfaceServiceLocator - wsdl loaded and service initialized.
更新2:
更多日志:
com.ebay.sdk.SdkException: ApiCall.execute() - null
at com.ebay.sdk.ApiCall.executeByApiName(Unknown Source) ~[ebay-sdk-core-1131.jar!/:?]
at com.ebay.sdk.ApiCall.execute(Unknown Source) ~[ebay-sdk-core-1131.jar!/:?]
at com.ebay.sdk.call.GetOrdersCall.getOrders(GetOrdersCall.java:169) ~[ebay-sdk-calls-1131.jar!/:?]
at com.company.job.tasks.ebay.EBaySalesList.load(EBaySalesList.java:119) [classes!/:?]
谢谢
共 (0) 个答案