有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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) 个答案