Skip to content

Commit 47ef71f

Browse files
authored
#2241 fix bug: when running with a fat jar, need to read entries with openConnection
when running in IDE or a thin jar, it is ok, when running with a fat jar in server, new JarFile can not open and read the entries.
1 parent 872b184 commit 47ef71f

File tree

1 file changed

+3
-5
lines changed

1 file changed

+3
-5
lines changed

util/src/main/java/io/kubernetes/client/util/ModelMapper.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222
import java.io.File;
2323

2424
import java.io.IOException;
25+
import java.net.JarURLConnection;
2526
import java.net.URI;
2627
import java.net.URL;
27-
import java.net.URLDecoder;
2828
import java.time.Duration;
2929
import java.util.ArrayList;
3030
import java.util.Enumeration;
@@ -484,10 +484,8 @@ private static List<String> getClassNamesFromPackage(ClassLoader classLoader, St
484484
}
485485

486486
private static void processJarPackage(URL packageURL, String packageName, String pkg, ArrayList<String> names) throws IOException {
487-
String jarFileName = URLDecoder.decode(packageURL.getFile(), "UTF-8");
488-
jarFileName = jarFileName.substring(5, jarFileName.indexOf("!"));
489-
logger.info("Loading classes from jar {}", jarFileName);
490-
try (JarFile jf = new JarFile(jarFileName)) {
487+
logger.info("Loading classes from jar {}", packageURL.getFile());
488+
try (JarFile jf = ((JarURLConnection) packageURL.openConnection()).getJarFile()) {
491489
Enumeration<JarEntry> jarEntries = jf.entries();
492490
while (jarEntries.hasMoreElements()) {
493491
processJarEntry(jarEntries.nextElement(), packageName, pkg, names);

0 commit comments

Comments
 (0)