[ https://issues.apache.org/jira/browse/WICKET-4458?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13242396#comment-13242396 ]
Tim Quinn edited comment on WICKET-4458 at 3/30/12 3:01 PM: ------------------------------------------------------------ Martin, you have misunderstood the meaning of the stack trace. Closing the stream is not sufficient in this case to fully close the file. The classes near the top of the stack trace show that the URL opened had scheme "jar" and Java SE, once it opens the JAR to resolve such a URL, leaves the JAR open by default even after the stream has been closed. One solution could be for the initializeComponents code, instead of using url.openStream, to use final URLConnection cnx = url.openConnection(url); cnx.setUseCaches(false); in = cnx.getInputStream(); (and of course to close the stream as it already does). - Tim was (Author: tjquinn): Martin, you have misunderstood the meaning of the stack trace. Closing the stream is not sufficient in this case to fully close the file. The classes near the top of the stack trace show that the URL opened had scheme "jar" and Java SE, once it opens the JAR to resolve such a URL, leaves the JAR open by default even after the stream has been closed. One solution could be for the initializeComponents code, instead of using url.openStream, to use final URLConnection cnx = url.openConnection(url); cnx.setUseCaches(false); in = cnx.getInputStream(); - Tim > wicket-core-1.5.5.jar not closed when Application is undeployed from directory > ------------------------------------------------------------------------------ > > Key: WICKET-4458 > URL: https://issues.apache.org/jira/browse/WICKET-4458 > Project: Wicket > Issue Type: Bug > Components: wicket > Affects Versions: 1.5.5 > Environment: java version "1.6.0_30" > Java(TM) SE Runtime Environment (build 1.6.0_30-b12) > Java HotSpot(TM) Client VM (build 20.5-b03, mixed mode, sharing) > Reporter: bernard > > How to reproduce: > - Create a 1.5.5 quickstart > - deploy it on the GlassFish server with directory deployment (I use NetBeans > which is easy) > - open the application in the browser > - undeploy the application > - try to execute the maven clean goal or try to delete the target dir > Error in GlassFish log: > Unable to delete file WEB-INF\lib\wicket-core-1.5.5.jar > I first thought that this was a GlassFish issue such as: > http://java.net/jira/browse/GLASSFISH-17339 > To eliminate that, I added glassfish\modules\war-util.jar to the project and > wrote code to let GlassFish close all jar files: > In the Application class: > @Override > public void onDestroy() { > super.onDestroy(); > ClassLoader parentClassLoader = this.getClass().getClassLoader(); > ClassLoader classLoader; > do{ > classLoader = parentClassLoader; > if(classLoader instanceof WebappClassLoader){ > WebappClassLoader glassFishLoader = > (WebappClassLoader)classLoader; > glassFishLoader.closeJARs(true); > break; > } > parentClassLoader = classLoader.getParent(); > }while(parentClassLoader != classLoader && parentClassLoader != null); > > } > > but this did not fix the problem. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa For more information on JIRA, see: http://www.atlassian.com/software/jira