Author: markt
Date: Sat Apr 16 19:08:19 2016
New Revision: 1739492
URL: http://svn.apache.org/viewvc?rev=1739492&view=rev
Log:
Java 9
The JRE class loaders no longer extend URLClassLoader
Modified:
tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java
Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java
URL:
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=1739492&r1=1739491&r2=1739492&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java (original)
+++ tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java Sat Apr 16
19:08:19 2016
@@ -24,7 +24,6 @@ import java.io.FilePermission;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLDecoder;
@@ -603,8 +602,7 @@ public class WebappLoader extends Lifecy
private boolean buildClassPath(StringBuilder classpath, ClassLoader
loader) {
if (loader instanceof URLClassLoader) {
- URL repositories[] =
- ((URLClassLoader) loader).getURLs();
+ URL repositories[] = ((URLClassLoader) loader).getURLs();
for (int i = 0; i < repositories.length; i++) {
String repository = repositories[i].toString();
if (repository.startsWith("file://"))
@@ -619,16 +617,20 @@ public class WebappLoader extends Lifecy
classpath.append(File.pathSeparator);
classpath.append(repository);
}
- } else {
- String cp = getClasspath(loader);
- if (cp == null) {
- log.info( "Unknown loader " + loader + " " +
loader.getClass());
- } else {
- if (classpath.length() > 0)
+ } else if (loader == ClassLoader.getSystemClassLoader()){
+ // Java 9 onwards. The internal class loaders no longer extend
+ // URLCLassLoader
+ String cp = System.getProperty("java.class.path");
+ if (cp != null && cp.length() > 0) {
+ if (classpath.length() > 0) {
classpath.append(File.pathSeparator);
+ }
classpath.append(cp);
}
return false;
+ } else {
+ log.info( "Unknown loader " + loader + " " + loader.getClass());
+ return false;
}
return true;
}
@@ -643,27 +645,6 @@ public class WebappLoader extends Lifecy
return result;
}
- // try to extract the classpath from a loader that is not URLClassLoader
- private String getClasspath( ClassLoader loader ) {
- try {
- Method m=loader.getClass().getMethod("getClasspath", new Class[]
{});
- if( log.isTraceEnabled())
- log.trace("getClasspath " + m );
- Object o=m.invoke( loader, new Object[] {} );
- if( log.isDebugEnabled() )
- log.debug("gotClasspath " + o);
- if( o instanceof String )
- return (String)o;
- return null;
- } catch( Exception ex ) {
- Throwable t = ExceptionUtils.unwrapInvocationTargetException(ex);
- ExceptionUtils.handleThrowable(t);
- if (log.isDebugEnabled())
- log.debug("getClasspath ", ex);
- }
- return null;
- }
-
private static final Log log = LogFactory.getLog(WebappLoader.class);
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]