Changeset 7718
- Timestamp:
- May 22, 2019, 9:56:58 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/core/net/sf/basedb/util/JarClassLoader.java
r7642 r7718 34 34 import java.util.jar.JarEntry; 35 35 import java.util.jar.Manifest; 36 36 37 import java.util.jar.Attributes; 37 38 import java.util.jar.Attributes.Name; … … 247 248 { 248 249 String packageName = name.substring(0, i); 249 @SuppressWarnings("deprecation") 250 Package pkg = getPackage(packageName); 251 if (pkg == null) 250 if (!isPackageDefined(packageName)) 252 251 { 253 252 JarInfo info = jarFiles.get(file); 254 253 Manifest mf = info != null ? info.manifest : null; 255 pkg =definePackage(packageName, mf);254 definePackage(packageName, mf); 256 255 } 257 256 } 258 257 Class<?> clazz = defineClass(name, b, 0, b.length); 259 258 return clazz; 259 } 260 261 // Safety limit to avoid endless loops in case parent class loaders are incorrectly linked 262 private static final int MAX_PARENTS = 20; 263 private boolean isPackageDefined(String name) 264 { 265 ClassLoader c = this; 266 for (int i = 0; c != null && i < MAX_PARENTS; i++) 267 { 268 if (c.getDefinedPackage(name) != null) return true; 269 c = c.getParent(); 270 } 271 return false; 260 272 } 261 273
Note: See TracChangeset
for help on using the changeset viewer.