<p>-version 3.26 | <p>-version 3.26 | ||||
<ul> | <ul> | ||||
<li>GitHub Issue #270 (PR #272), Issue #265 (PR #267). | |||||
<li>GitHub Issue #270 (PR #272), Issue #265 (PR #267), Issue #271 and #222. | |||||
</ul> | </ul> | ||||
<p>-version 3.25 on April 16, 2019 | <p>-version 3.25 on April 16, 2019 |
*/ | */ | ||||
public static boolean releaseUnmodifiedClassFile = true; | public static boolean releaseUnmodifiedClassFile = true; | ||||
/** | |||||
* If true, the contents of a jar file are cached after the jar | |||||
* file is opened. | |||||
* | |||||
* <p>The initial value is true. | |||||
*/ | |||||
public static boolean cacheOpenedJarFile = true; // see ClassPoolTail.JarClassPath#openClassfile(String) | |||||
protected ClassPoolTail source; | protected ClassPoolTail source; | ||||
protected ClassPool parent; | protected ClassPool parent; | ||||
protected Hashtable classes; // should be synchronous | protected Hashtable classes; // should be synchronous |
URL jarURL = find(classname); | URL jarURL = find(classname); | ||||
if (null != jarURL) | if (null != jarURL) | ||||
try { | try { | ||||
java.net.URLConnection con = jarURL.openConnection(); | |||||
con.setUseCaches(false); | |||||
return con.getInputStream(); | |||||
if (ClassPool.cacheOpenedJarFile) | |||||
return jarURL.openConnection().getInputStream(); | |||||
else { | |||||
java.net.URLConnection con = jarURL.openConnection(); | |||||
con.setUseCaches(false); | |||||
return con.getInputStream(); | |||||
} | |||||
} | } | ||||
catch (IOException e) { | catch (IOException e) { | ||||
throw new NotFoundException("broken jar file?: " | throw new NotFoundException("broken jar file?: " |