X-Git-Url: https://juplo.de/gitweb/?p=scannotation;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fscannotation%2FWarUrlFinder.java;h=2da7c8c3e57337ecb61c69639f397518fabf70e3;hp=f253764afe4086324daa37a61b31892cdb253856;hb=f42e6e6e1662efe9a2fb23a325854c8327829c17;hpb=36e6637926203201648e7892ec6ee1240807218e
diff --git a/src/main/java/org/scannotation/WarUrlFinder.java b/src/main/java/org/scannotation/WarUrlFinder.java
index f253764..2da7c8c 100644
--- a/src/main/java/org/scannotation/WarUrlFinder.java
+++ b/src/main/java/org/scannotation/WarUrlFinder.java
@@ -6,6 +6,7 @@ import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.Set;
+import java.io.File;
/**
* @author Bill Burke
@@ -23,6 +24,13 @@ public class WarUrlFinder
{
ArrayList list = new ArrayList();
Set libJars = servletContext.getResourcePaths("/WEB-INF/lib");
+ if (libJars == null)
+ {
+ URL[] empty = {};
+ return empty;
+ }
+
+
for (Object jar : libJars)
{
try
@@ -48,27 +56,21 @@ public class WarUrlFinder
* if your servlet container does not extract the /WEB-INF/classes into a real file-based directory
*
* @param servletContext
- * @return
+ * @return null if cannot determin /WEB-INF/classes
*/
public static URL findWebInfClassesPath(ServletContext servletContext)
{
- Set libJars = servletContext.getResourcePaths("/WEB-INF/classes");
- for (Object jar : libJars)
+ String path = servletContext.getRealPath("/WEB-INF/classes");
+ if (path == null) return null;
+ File fp = new File(path);
+ if (fp.exists() == false) return null;
+ try
{
- try
- {
- URL url = servletContext.getResource((String) jar);
- String urlString = url.toString();
- int index = urlString.lastIndexOf("/WEB-INF/classes/");
- urlString = urlString.substring(0, index + "/WEB-INF/classes/".length());
- return new URL(urlString);
- }
- catch (MalformedURLException e)
- {
- throw new RuntimeException(e);
- }
+ return fp.toURL();
+ }
+ catch (MalformedURLException e)
+ {
+ throw new RuntimeException(e);
}
- return null;
-
}
}