You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by kw...@apache.org on 2021/10/19 17:58:37 UTC
[jackrabbit-filevault] branch master updated: JCRVLT-531 close
URLClassLoader prior to deleting JAR file (#174)
This is an automated email from the ASF dual-hosted git repository.
kwin pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/jackrabbit-filevault.git
The following commit(s) were added to refs/heads/master by this push:
new 534137f JCRVLT-531 close URLClassLoader prior to deleting JAR file (#174)
534137f is described below
commit 534137f896cf86fc66737407183a67faf6b0c88c
Author: Konrad Windszus <kw...@apache.org>
AuthorDate: Tue Oct 19 19:58:31 2021 +0200
JCRVLT-531 close URLClassLoader prior to deleting JAR file (#174)
allows to delete tmp jar files on Windows
---
.../packaging/impl/InstallHookProcessorImpl.java | 21 +++++++++++++++------
1 file changed, 15 insertions(+), 6 deletions(-)
diff --git a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
index 69e41c6..bac0b65 100644
--- a/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
+++ b/vault-core/src/main/java/org/apache/jackrabbit/vault/packaging/impl/InstallHookProcessorImpl.java
@@ -181,6 +181,8 @@ public class InstallHookProcessorImpl implements InstallHookProcessor {
private ClassLoader parentClassLoader;
+ private URLClassLoader urlClassLoader;
+
private InstallHook hook;
private String mainClassName;
@@ -201,6 +203,9 @@ public class InstallHookProcessorImpl implements InstallHookProcessor {
private void destroy() throws IOException {
parentClassLoader = null;
hook = null;
+ if (urlClassLoader != null) {
+ urlClassLoader.close();
+ }
if (jarFile != null) {
Files.deleteIfExists(jarFile);
}
@@ -224,19 +229,23 @@ public class InstallHookProcessorImpl implements InstallHookProcessor {
if (parentClassLoader == null) {
try {
// 1st fallback is the current classes classloader (the bundle classloader in the OSGi context)
- loadMainClass(URLClassLoader.newInstance(
+ urlClassLoader = URLClassLoader.newInstance(
new URL[] { jarFile.toUri().toURL() },
- this.getClass().getClassLoader()));
+ this.getClass().getClassLoader());
+ loadMainClass(urlClassLoader);
} catch (ClassNotFoundException cnfe) {
+ urlClassLoader.close();
// 2nd fallback is the thread context classloader
- loadMainClass(URLClassLoader.newInstance(
+ urlClassLoader = URLClassLoader.newInstance(
new URL[] { jarFile.toUri().toURL() },
- Thread.currentThread().getContextClassLoader()));
+ Thread.currentThread().getContextClassLoader());
+ loadMainClass(urlClassLoader);
}
} else {
- loadMainClass(URLClassLoader.newInstance(
+ urlClassLoader = URLClassLoader.newInstance(
new URL[] { jarFile.toUri().toURL() },
- parentClassLoader));
+ parentClassLoader);
+ loadMainClass(urlClassLoader);
}
} else {
// create classloader