java: [BUG] ModelMapper cannot register any resource classes if packaged in executable fat jar

Describe the bug

if the project is packaged in a whole executable fat jar, e.g:

$ jar -tf my-project-executable.jar
META-INF/
META-INF/MANIFEST.MF
org/
org/springframework/
org/springframework/boot/
...
BOOT-INF/lib/gson-fire-1.8.5.jar
BOOT-INF/lib/joda-time-2.10.5.jar
BOOT-INF/lib/joda-convert-2.2.1.jar
BOOT-INF/lib/client-java-proto-11.0.1.jar
BOOT-INF/lib/client-java-11.0.1.jar  # NESTED JAR FILE
...

the classes under io.kubernetes.client.openapi.model will be packaged as a nested jar file inside the fat jar file. when we’re trying scanning the classes via the class-loader. the URL for the pre-built resource classes will be e.g.:

file:/home/admin/release/run/target/boot/agent-installer-bootstrap-0.0.1-SNAPSHOT-executable.jar!/BOOT-INF/lib/client-java-api-11.0.1.jar!/io/kubernetes/client/openapi/models

then we will get a wrong URL to the jar file when we’re extracting file path from the resource path above:

/home/admin/release/run/target/boot/agent-installer-bootstrap-0.0.1-SNAPSHOT-executable.jar!/BOOT-INF/lib/client-java-api-11.0.1.jar

b/c we cant correctly open the actual jar file using the file path above, no classes will be found in the end… one feasible solution i can think of is to visit the nested jar file recursively if multiple ! is found in the URL.

** Client Version ** e.g. `11.0.1

About this issue

  • Original URL
  • State: open
  • Created 3 years ago
  • Comments: 28 (13 by maintainers)

Commits related to this issue

Most upvoted comments

key point and solution is found.

the problem codes here: image

Yaml.class.getClassLoader() can not read any class in “io.kubernetes.client.openapi.models” cause of bad jar url. if (entryName.startsWith(packageName) && entryName.length() > packageName.length() + 5) never hit.

image

unzip my jar like


META-INF/
META-INF/MANIFEST.MF
org/
org/springframework/
org/springframework/boot/
org/springframework/boot/loader/
org/springframework/boot/loader/ClassPathIndexFile.class
org/springframework/boot/loader/ExecutableArchiveLauncher.class
org/springframework/boot/loader/JarLauncher.class
org/springframework/boot/loader/LaunchedURLClassLoader$DefinePackageCallType.class
org/springframework/boot/loader/LaunchedURLClassLoader$UseFastConnectionExceptionsEnumeration.class
org/springframework/boot/loader/LaunchedURLClassLoader.class
org/springframework/boot/loader/Launcher.class
org/springframework/boot/loader/MainMethodRunner.class
org/springframework/boot/loader/PropertiesLauncher$1.class
org/springframework/boot/loader/PropertiesLauncher$ArchiveEntryFilter.class
org/springframework/boot/loader/PropertiesLauncher$ClassPathArchives.class
org/springframework/boot/loader/PropertiesLauncher$PrefixMatchingArchiveFilter.class
org/springframework/boot/loader/PropertiesLauncher.class
org/springframework/boot/loader/WarLauncher.class
org/springframework/boot/loader/archive/
org/springframework/boot/loader/archive/Archive$Entry.class
org/springframework/boot/loader/archive/Archive$EntryFilter.class
org/springframework/boot/loader/archive/Archive.class
org/springframework/boot/loader/archive/ExplodedArchive$AbstractIterator.class
org/springframework/boot/loader/archive/ExplodedArchive$ArchiveIterator.class
org/springframework/boot/loader/archive/ExplodedArchive$EntryIterator.class
org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class
org/springframework/boot/loader/archive/ExplodedArchive$SimpleJarFileArchive.class
org/springframework/boot/loader/archive/ExplodedArchive.class
org/springframework/boot/loader/archive/JarFileArchive$AbstractIterator.class
org/springframework/boot/loader/archive/JarFileArchive$EntryIterator.class
org/springframework/boot/loader/archive/JarFileArchive$JarFileEntry.class
org/springframework/boot/loader/archive/JarFileArchive$NestedArchiveIterator.class
org/springframework/boot/loader/archive/JarFileArchive.class
org/springframework/boot/loader/data/
org/springframework/boot/loader/data/RandomAccessData.class
org/springframework/boot/loader/data/RandomAccessDataFile$1.class
org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class
org/springframework/boot/loader/data/RandomAccessDataFile$FileAccess.class
org/springframework/boot/loader/data/RandomAccessDataFile.class
org/springframework/boot/loader/jar/
org/springframework/boot/loader/jar/AbstractJarFile$JarFileType.class
org/springframework/boot/loader/jar/AbstractJarFile.class
org/springframework/boot/loader/jar/AsciiBytes.class
org/springframework/boot/loader/jar/Bytes.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord$1.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64End.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64Locator.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class
org/springframework/boot/loader/jar/CentralDirectoryFileHeader.class
org/springframework/boot/loader/jar/CentralDirectoryParser.class
org/springframework/boot/loader/jar/CentralDirectoryVisitor.class
org/springframework/boot/loader/jar/FileHeader.class
org/springframework/boot/loader/jar/Handler.class
org/springframework/boot/loader/jar/JarEntry.class
org/springframework/boot/loader/jar/JarEntryCertification.class
org/springframework/boot/loader/jar/JarEntryFilter.class
org/springframework/boot/loader/jar/JarFile$1.class
org/springframework/boot/loader/jar/JarFile$JarEntryEnumeration.class
org/springframework/boot/loader/jar/JarFile.class
org/springframework/boot/loader/jar/JarFileEntries$1.class
org/springframework/boot/loader/jar/JarFileEntries$EntryIterator.class
org/springframework/boot/loader/jar/JarFileEntries$Offsets.class
org/springframework/boot/loader/jar/JarFileEntries$Zip64Offsets.class
org/springframework/boot/loader/jar/JarFileEntries$ZipOffsets.class
org/springframework/boot/loader/jar/JarFileEntries.class
org/springframework/boot/loader/jar/JarFileWrapper.class
org/springframework/boot/loader/jar/JarURLConnection$1.class
org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class
org/springframework/boot/loader/jar/JarURLConnection.class
org/springframework/boot/loader/jar/StringSequence.class
org/springframework/boot/loader/jar/ZipInflaterInputStream.class
org/springframework/boot/loader/jarmode/
org/springframework/boot/loader/jarmode/JarMode.class
org/springframework/boot/loader/jarmode/JarModeLauncher.class
org/springframework/boot/loader/jarmode/TestJarMode.class
org/springframework/boot/loader/util/
org/springframework/boot/loader/util/SystemPropertyUtils.class
BOOT-INF/
BOOT-INF/classes/
BOOT-INF/classes/com/
....
META-INF/maven/
....
BOOT-INF/classes/logback-spring.xml
BOOT-INF/classes/application.yml
BOOT-INF/classes/application-local.yml
...
BOOT-INF/lib/
BOOT-INF/lib/springfox-boot-starter-3.0.0.jar
BOOT-INF/lib/springfox-oas-3.0.0.jar
BOOT-INF/lib/swagger-annotations-2.1.2.jar
BOOT-INF/lib/swagger-models-2.1.2.jar
BOOT-INF/lib/springfox-spi-3.0.0.jar
BOOT-INF/lib/springfox-schema-3.0.0.jar
BOOT-INF/lib/springfox-core-3.0.0.jar
BOOT-INF/lib/springfox-spring-web-3.0.0.jar
BOOT-INF/lib/classgraph-4.8.83.jar
BOOT-INF/lib/springfox-spring-webmvc-3.0.0.jar
BOOT-INF/lib/springfox-spring-webflux-3.0.0.jar
BOOT-INF/lib/springfox-swagger-common-3.0.0.jar
BOOT-INF/lib/mapstruct-1.3.1.Final.jar
BOOT-INF/lib/springfox-data-rest-3.0.0.jar
BOOT-INF/lib/springfox-bean-validators-3.0.0.jar
BOOT-INF/lib/springfox-swagger2-3.0.0.jar
BOOT-INF/lib/swagger-annotations-1.5.20.jar
BOOT-INF/lib/swagger-models-1.5.20.jar
BOOT-INF/lib/springfox-swagger-ui-3.0.0.jar
BOOT-INF/lib/classmate-1.5.1.jar
BOOT-INF/lib/slf4j-api-1.7.36.jar
BOOT-INF/lib/spring-plugin-core-2.0.0.RELEASE.jar
BOOT-INF/lib/spring-beans-5.3.19.jar
BOOT-INF/lib/spring-context-5.3.19.jar
BOOT-INF/lib/spring-aop-5.3.19.jar
BOOT-INF/lib/spring-plugin-metadata-2.0.0.RELEASE.jar
BOOT-INF/lib/mysql-connector-java-8.0.20.jar
BOOT-INF/lib/protobuf-java-3.6.1.jar
BOOT-INF/lib/mybatis-spring-boot-starter-2.2.1.jar
BOOT-INF/lib/spring-boot-2.6.7.jar
BOOT-INF/lib/spring-boot-autoconfigure-2.6.7.jar
BOOT-INF/lib/logback-classic-1.2.11.jar
BOOT-INF/lib/logback-core-1.2.11.jar
BOOT-INF/lib/log4j-to-slf4j-2.17.2.jar
BOOT-INF/lib/log4j-api-2.17.2.jar
BOOT-INF/lib/jul-to-slf4j-1.7.36.jar
BOOT-INF/lib/jakarta.annotation-api-1.3.5.jar
BOOT-INF/lib/snakeyaml-1.29.jar
BOOT-INF/lib/HikariCP-4.0.3.jar
BOOT-INF/lib/spring-jdbc-5.3.19.jar
BOOT-INF/lib/spring-tx-5.3.19.jar
BOOT-INF/lib/mybatis-spring-boot-autoconfigure-2.2.1.jar
BOOT-INF/lib/mybatis-3.5.9.jar
BOOT-INF/lib/mybatis-spring-2.0.6.jar
BOOT-INF/lib/mapper-spring-boot-starter-2.1.5.jar
BOOT-INF/lib/mapper-core-1.1.5.jar
BOOT-INF/lib/persistence-api-1.0.jar
BOOT-INF/lib/mapper-base-1.1.5.jar
BOOT-INF/lib/mapper-weekend-1.1.5.jar
BOOT-INF/lib/mapper-spring-1.1.5.jar
BOOT-INF/lib/mapper-extra-1.1.5.jar
BOOT-INF/lib/mapper-spring-boot-autoconfigure-2.1.5.jar
BOOT-INF/lib/jackson-datatype-jdk8-2.13.2.jar
BOOT-INF/lib/jackson-datatype-jsr310-2.13.2.jar
BOOT-INF/lib/jackson-module-parameter-names-2.13.2.jar
BOOT-INF/lib/tomcat-embed-core-9.0.62.jar
BOOT-INF/lib/tomcat-embed-el-9.0.62.jar
BOOT-INF/lib/tomcat-embed-websocket-9.0.62.jar
BOOT-INF/lib/spring-web-5.3.19.jar
BOOT-INF/lib/spring-webmvc-5.3.19.jar
BOOT-INF/lib/spring-expression-5.3.19.jar
BOOT-INF/lib/jackson-databind-2.13.2.2.jar
BOOT-INF/lib/jackson-annotations-2.13.2.jar
BOOT-INF/lib/jackson-core-2.13.2.jar
BOOT-INF/lib/api-0.0.1-SNAPSHOT.jar
BOOT-INF/lib/client-java-15.0.0.jar
BOOT-INF/lib/simpleclient-0.12.0.jar
BOOT-INF/lib/simpleclient_tracer_otel-0.12.0.jar
BOOT-INF/lib/simpleclient_tracer_common-0.12.0.jar
BOOT-INF/lib/simpleclient_tracer_otel_agent-0.12.0.jar
BOOT-INF/lib/simpleclient_httpserver-0.12.0.jar
BOOT-INF/lib/simpleclient_common-0.12.0.jar
BOOT-INF/lib/client-java-api-15.0.0.jar
BOOT-INF/lib/javax.annotation-api-1.3.2.jar
BOOT-INF/lib/okhttp-4.9.3.jar
BOOT-INF/lib/okio-2.8.0.jar
BOOT-INF/lib/kotlin-stdlib-common-1.6.21.jar
BOOT-INF/lib/kotlin-stdlib-1.6.21.jar
BOOT-INF/lib/annotations-13.0.jar
BOOT-INF/lib/logging-interceptor-3.14.9.jar
BOOT-INF/lib/gson-fire-1.8.5.jar
BOOT-INF/lib/client-java-proto-15.0.0.jar
BOOT-INF/lib/commons-codec-1.15.jar
BOOT-INF/lib/commons-compress-1.21.jar
BOOT-INF/lib/commons-lang3-3.12.0.jar
BOOT-INF/lib/commons-io-2.2.jar
BOOT-INF/lib/bcprov-ext-jdk15on-1.70.jar
BOOT-INF/lib/bcpkix-jdk15on-1.70.jar
BOOT-INF/lib/bcprov-jdk15on-1.70.jar
BOOT-INF/lib/bcutil-jdk15on-1.70.jar
BOOT-INF/lib/commons-collections4-4.4.jar
BOOT-INF/lib/jose4j-0.7.11.jar
BOOT-INF/lib/byte-buddy-1.11.22.jar
BOOT-INF/lib/spring-core-5.3.19.jar
BOOT-INF/lib/spring-jcl-5.3.19.jar
BOOT-INF/lib/gson-2.9.0.jar
BOOT-INF/lib/lombok-1.18.24.jar
BOOT-INF/lib/guava-23.0.jar
BOOT-INF/lib/jsr305-1.3.9.jar
BOOT-INF/lib/error_prone_annotations-2.0.18.jar
BOOT-INF/lib/j2objc-annotations-1.1.jar
BOOT-INF/lib/animal-sniffer-annotations-1.14.jar
BOOT-INF/lib/freemarker-2.3.9.jar
BOOT-INF/lib/spring-boot-jarmode-layertools-2.6.7.jar
BOOT-INF/classpath.idx
BOOT-INF/layers.idx
META-INF/
META-INF/MANIFEST.MF
org/
org/springframework/
org/springframework/boot/
org/springframework/boot/loader/
org/springframework/boot/loader/ClassPathIndexFile.class
org/springframework/boot/loader/ExecutableArchiveLauncher.class
org/springframework/boot/loader/JarLauncher.class
org/springframework/boot/loader/LaunchedURLClassLoader$DefinePackageCallType.class
org/springframework/boot/loader/LaunchedURLClassLoader$UseFastConnectionExceptionsEnumeration.class
org/springframework/boot/loader/LaunchedURLClassLoader.class
org/springframework/boot/loader/Launcher.class
org/springframework/boot/loader/MainMethodRunner.class
org/springframework/boot/loader/PropertiesLauncher$1.class
org/springframework/boot/loader/PropertiesLauncher$ArchiveEntryFilter.class
org/springframework/boot/loader/PropertiesLauncher$ClassPathArchives.class
org/springframework/boot/loader/PropertiesLauncher$PrefixMatchingArchiveFilter.class
org/springframework/boot/loader/PropertiesLauncher.class
org/springframework/boot/loader/WarLauncher.class
org/springframework/boot/loader/archive/
org/springframework/boot/loader/archive/Archive$Entry.class
org/springframework/boot/loader/archive/Archive$EntryFilter.class
org/springframework/boot/loader/archive/Archive.class
org/springframework/boot/loader/archive/ExplodedArchive$AbstractIterator.class
org/springframework/boot/loader/archive/ExplodedArchive$ArchiveIterator.class
org/springframework/boot/loader/archive/ExplodedArchive$EntryIterator.class
org/springframework/boot/loader/archive/ExplodedArchive$FileEntry.class
org/springframework/boot/loader/archive/ExplodedArchive$SimpleJarFileArchive.class
org/springframework/boot/loader/archive/ExplodedArchive.class
org/springframework/boot/loader/archive/JarFileArchive$AbstractIterator.class
org/springframework/boot/loader/archive/JarFileArchive$EntryIterator.class
org/springframework/boot/loader/archive/JarFileArchive$JarFileEntry.class
org/springframework/boot/loader/archive/JarFileArchive$NestedArchiveIterator.class
org/springframework/boot/loader/archive/JarFileArchive.class
org/springframework/boot/loader/data/
org/springframework/boot/loader/data/RandomAccessData.class
org/springframework/boot/loader/data/RandomAccessDataFile$1.class
org/springframework/boot/loader/data/RandomAccessDataFile$DataInputStream.class
org/springframework/boot/loader/data/RandomAccessDataFile$FileAccess.class
org/springframework/boot/loader/data/RandomAccessDataFile.class
org/springframework/boot/loader/jar/
org/springframework/boot/loader/jar/AbstractJarFile$JarFileType.class
org/springframework/boot/loader/jar/AbstractJarFile.class
org/springframework/boot/loader/jar/AsciiBytes.class
org/springframework/boot/loader/jar/Bytes.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord$1.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64End.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord$Zip64Locator.class
org/springframework/boot/loader/jar/CentralDirectoryEndRecord.class
org/springframework/boot/loader/jar/CentralDirectoryFileHeader.class
org/springframework/boot/loader/jar/CentralDirectoryParser.class
org/springframework/boot/loader/jar/CentralDirectoryVisitor.class
org/springframework/boot/loader/jar/FileHeader.class
org/springframework/boot/loader/jar/Handler.class
org/springframework/boot/loader/jar/JarEntry.class
org/springframework/boot/loader/jar/JarEntryCertification.class
org/springframework/boot/loader/jar/JarEntryFilter.class
org/springframework/boot/loader/jar/JarFile$1.class
org/springframework/boot/loader/jar/JarFile$JarEntryEnumeration.class
org/springframework/boot/loader/jar/JarFile.class
org/springframework/boot/loader/jar/JarFileEntries$1.class
org/springframework/boot/loader/jar/JarFileEntries$EntryIterator.class
org/springframework/boot/loader/jar/JarFileEntries$Offsets.class
org/springframework/boot/loader/jar/JarFileEntries$Zip64Offsets.class
org/springframework/boot/loader/jar/JarFileEntries$ZipOffsets.class
org/springframework/boot/loader/jar/JarFileEntries.class
org/springframework/boot/loader/jar/JarFileWrapper.class
org/springframework/boot/loader/jar/JarURLConnection$1.class
org/springframework/boot/loader/jar/JarURLConnection$JarEntryName.class
org/springframework/boot/loader/jar/JarURLConnection.class
org/springframework/boot/loader/jar/StringSequence.class
org/springframework/boot/loader/jar/ZipInflaterInputStream.class
org/springframework/boot/loader/jarmode/
org/springframework/boot/loader/jarmode/JarMode.class
org/springframework/boot/loader/jarmode/JarModeLauncher.class
org/springframework/boot/loader/jarmode/TestJarMode.class
org/springframework/boot/loader/util/
org/springframework/boot/loader/util/SystemPropertyUtils.class
BOOT-INF/
BOOT-INF/classes/
BOOT-INF/classes/com/
...
BOOT-INF/lib/
BOOT-INF/lib/springfox-boot-starter-3.0.0.jar
BOOT-INF/lib/springfox-oas-3.0.0.jar
BOOT-INF/lib/swagger-annotations-2.1.2.jar
BOOT-INF/lib/swagger-models-2.1.2.jar
BOOT-INF/lib/springfox-spi-3.0.0.jar
BOOT-INF/lib/springfox-schema-3.0.0.jar
BOOT-INF/lib/springfox-core-3.0.0.jar
BOOT-INF/lib/springfox-spring-web-3.0.0.jar
BOOT-INF/lib/classgraph-4.8.83.jar
BOOT-INF/lib/springfox-spring-webmvc-3.0.0.jar
BOOT-INF/lib/springfox-spring-webflux-3.0.0.jar
BOOT-INF/lib/springfox-swagger-common-3.0.0.jar
BOOT-INF/lib/mapstruct-1.3.1.Final.jar
BOOT-INF/lib/springfox-data-rest-3.0.0.jar
BOOT-INF/lib/springfox-bean-validators-3.0.0.jar
BOOT-INF/lib/springfox-swagger2-3.0.0.jar
BOOT-INF/lib/swagger-annotations-1.5.20.jar
BOOT-INF/lib/swagger-models-1.5.20.jar
BOOT-INF/lib/springfox-swagger-ui-3.0.0.jar
BOOT-INF/lib/classmate-1.5.1.jar
BOOT-INF/lib/slf4j-api-1.7.36.jar
BOOT-INF/lib/spring-plugin-core-2.0.0.RELEASE.jar
BOOT-INF/lib/spring-beans-5.3.19.jar
BOOT-INF/lib/spring-context-5.3.19.jar
BOOT-INF/lib/spring-aop-5.3.19.jar
BOOT-INF/lib/spring-plugin-metadata-2.0.0.RELEASE.jar
BOOT-INF/lib/mysql-connector-java-8.0.20.jar
BOOT-INF/lib/protobuf-java-3.6.1.jar
BOOT-INF/lib/mybatis-spring-boot-starter-2.2.1.jar
BOOT-INF/lib/spring-boot-2.6.7.jar
BOOT-INF/lib/spring-boot-autoconfigure-2.6.7.jar
BOOT-INF/lib/logback-classic-1.2.11.jar
BOOT-INF/lib/logback-core-1.2.11.jar
BOOT-INF/lib/log4j-to-slf4j-2.17.2.jar
BOOT-INF/lib/log4j-api-2.17.2.jar
BOOT-INF/lib/jul-to-slf4j-1.7.36.jar
BOOT-INF/lib/jakarta.annotation-api-1.3.5.jar
BOOT-INF/lib/snakeyaml-1.29.jar
BOOT-INF/lib/HikariCP-4.0.3.jar
BOOT-INF/lib/spring-jdbc-5.3.19.jar
BOOT-INF/lib/spring-tx-5.3.19.jar
BOOT-INF/lib/mybatis-spring-boot-autoconfigure-2.2.1.jar
BOOT-INF/lib/mybatis-3.5.9.jar
BOOT-INF/lib/mybatis-spring-2.0.6.jar
BOOT-INF/lib/mapper-spring-boot-starter-2.1.5.jar
BOOT-INF/lib/mapper-core-1.1.5.jar
BOOT-INF/lib/persistence-api-1.0.jar
BOOT-INF/lib/mapper-base-1.1.5.jar
BOOT-INF/lib/mapper-weekend-1.1.5.jar
BOOT-INF/lib/mapper-spring-1.1.5.jar
BOOT-INF/lib/mapper-extra-1.1.5.jar
BOOT-INF/lib/mapper-spring-boot-autoconfigure-2.1.5.jar
BOOT-INF/lib/jackson-datatype-jdk8-2.13.2.jar
BOOT-INF/lib/jackson-datatype-jsr310-2.13.2.jar
BOOT-INF/lib/jackson-module-parameter-names-2.13.2.jar
BOOT-INF/lib/tomcat-embed-core-9.0.62.jar
BOOT-INF/lib/tomcat-embed-el-9.0.62.jar
BOOT-INF/lib/tomcat-embed-websocket-9.0.62.jar
BOOT-INF/lib/spring-web-5.3.19.jar
BOOT-INF/lib/spring-webmvc-5.3.19.jar
BOOT-INF/lib/spring-expression-5.3.19.jar
BOOT-INF/lib/jackson-databind-2.13.2.2.jar
BOOT-INF/lib/jackson-annotations-2.13.2.jar
BOOT-INF/lib/jackson-core-2.13.2.jar
BOOT-INF/lib/api-0.0.1-SNAPSHOT.jar
BOOT-INF/lib/client-java-15.0.0.jar
BOOT-INF/lib/simpleclient-0.12.0.jar
BOOT-INF/lib/simpleclient_tracer_otel-0.12.0.jar
BOOT-INF/lib/simpleclient_tracer_common-0.12.0.jar
BOOT-INF/lib/simpleclient_tracer_otel_agent-0.12.0.jar
BOOT-INF/lib/simpleclient_httpserver-0.12.0.jar
BOOT-INF/lib/simpleclient_common-0.12.0.jar
BOOT-INF/lib/client-java-api-15.0.0.jar
BOOT-INF/lib/javax.annotation-api-1.3.2.jar
BOOT-INF/lib/okhttp-4.9.3.jar
BOOT-INF/lib/okio-2.8.0.jar
BOOT-INF/lib/kotlin-stdlib-common-1.6.21.jar
BOOT-INF/lib/kotlin-stdlib-1.6.21.jar
BOOT-INF/lib/annotations-13.0.jar
BOOT-INF/lib/logging-interceptor-3.14.9.jar
BOOT-INF/lib/gson-fire-1.8.5.jar
BOOT-INF/lib/client-java-proto-15.0.0.jar
BOOT-INF/lib/commons-codec-1.15.jar
BOOT-INF/lib/commons-compress-1.21.jar
BOOT-INF/lib/commons-lang3-3.12.0.jar
BOOT-INF/lib/commons-io-2.2.jar
BOOT-INF/lib/bcprov-ext-jdk15on-1.70.jar
BOOT-INF/lib/bcpkix-jdk15on-1.70.jar
BOOT-INF/lib/bcprov-jdk15on-1.70.jar
BOOT-INF/lib/bcutil-jdk15on-1.70.jar
BOOT-INF/lib/commons-collections4-4.4.jar
BOOT-INF/lib/jose4j-0.7.11.jar
BOOT-INF/lib/byte-buddy-1.11.22.jar
BOOT-INF/lib/spring-core-5.3.19.jar
BOOT-INF/lib/spring-jcl-5.3.19.jar
BOOT-INF/lib/gson-2.9.0.jar
BOOT-INF/lib/lombok-1.18.24.jar
BOOT-INF/lib/guava-23.0.jar
BOOT-INF/lib/jsr305-1.3.9.jar
BOOT-INF/lib/error_prone_annotations-2.0.18.jar
BOOT-INF/lib/j2objc-annotations-1.1.jar
BOOT-INF/lib/animal-sniffer-annotations-1.14.jar
BOOT-INF/lib/freemarker-2.3.9.jar
BOOT-INF/lib/spring-boot-jarmode-layertools-2.6.7.jar
BOOT-INF/classpath.idx
BOOT-INF/layers.idx

soulution

dont use fat, make lib and app jar split

<plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <layout>ZIP</layout>
                    <includes>
                        <include>
                            <groupId>non-exists</groupId>
                            <artifactId>non-exists</artifactId>
                        </include>
                    </includes>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <id>copy-dependencies</id>
                        <phase>package</phase>
                        <goals>
                            <goal>copy-dependencies</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>target/lib</outputDirectory>
                            <excludeTransitive>false</excludeTransitive>
                            <stripVersion>false</stripVersion>
                            <includeScope>runtime</includeScope>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

use to start app

java -Dloader.path=lib -jar service-0.0.1-SNAPSHOT.jar

I’ve submitted a PR addressing the bug and improving the code as per the issue description… see https://github.com/kubernetes-client/java/pull/2620

I suggest tag this “bug” into “known issues”, because Springboot project default package type is fat jar and this known issue may be hit easily