diff --git a/changelog.html b/changelog.html index 1ef6282ec3..71a76b5acb 100644 --- a/changelog.html +++ b/changelog.html @@ -81,6 +81,8 @@ Upcoming changes
  • Rebuilding dependency graph was taking much too long for big maven projects (issue 7535) +
  • + Maven builds didn't work in JBoss 6.
  • Ping setup for detecting bad master/slave communication is done more consistently now (issue 8990) diff --git a/remoting/src/main/java/hudson/remoting/Which.java b/remoting/src/main/java/hudson/remoting/Which.java index e266ea5709..c2196246bb 100644 --- a/remoting/src/main/java/hudson/remoting/Which.java +++ b/remoting/src/main/java/hudson/remoting/Which.java @@ -28,6 +28,7 @@ import java.io.File; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.io.InputStream; +import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.net.MalformedURLException; import java.net.URLConnection; @@ -130,7 +131,29 @@ public class Which { } finally { is.close(); } + } + if(resURL.startsWith("vfs:")) { + // JBoss6 + String dotdot=""; + for (int i=clazz.getName().split("\\.").length; i>1; i--) + dotdot+="../"; + + try { + URL jar = new URL(res,dotdot); + String path = jar.getPath(); + if (path.endsWith("/")) path=path.substring(0,path.length()-1); + // obtain the file name portion + String fileName = path.substring(path.lastIndexOf('/')+1); + + Object vfs = new URL(jar,"..").getContent(); // a VirtualFile object pointing to the parent of the jar + File dir = (File)vfs.getClass().getMethod("getPhysicalFile").invoke(vfs); + + File jarFile = new File(dir,fileName); + if (jarFile.exists()) return jarFile; + } catch (Exception e) { + LOGGER.log(Level.FINE, "Failed to resolve vfs file into a location",e); + } } URLConnection con = res.openConnection();