Hi, Java guru,
I am in a situation that I need to figure out which *.jar files the
java process is using. Basically this huge J2EE application has a lot
of customized jar files (hundreds jar files). We are troubleshooting an
application issue and suspect a wrong jar file (same name) is being
used instead of the expected one.
Here comes the question. after the java process is running, how can we
know the full classpath which the process uses to find the class it is
looking for?
Platform: Solaris
JDK: 1.5
Thanks.
Arne Vajhøj - 17 Nov 2006 03:39 GMT
> I am in a situation that I need to figure out which *.jar files the
> java process is using. Basically this huge J2EE application has a lot
[quoted text clipped - 5 lines]
> know the full classpath which the process uses to find the class it is
> looking for?
It is very difficult to know for sure.
But below are a small JSP file that may give you some ideas.
Arne
<%@ page import="java.net.*" %>
<ul>
<%
ClassLoader cl = this.getClass().getClassLoader();
while(cl != null) {
%>
<li><%=cl.getClass().getName()%></li>
<%
if(cl instanceof URLClassLoader) {
%>
<ul>
<%
URL[] urls = ((URLClassLoader)cl).getURLs();
for(int i = 0; i < urls.length; i++) {
%>
<li><%=urls[i]%></li>
<%
}
%>
</ul>
<%
}
cl = cl.getParent();
}
%>
</ul>
Manish Pandit - 17 Nov 2006 03:44 GMT
You can also try <%=System.getProperty("java.class.path")%> in the JSP.
-cheers,
Manish
Arne Vajhøj - 18 Nov 2006 02:19 GMT
> You can also try <%=System.getProperty("java.class.path")%> in the JSP.
That will not return useful information in a J2EE context, because
most of the interesting stuff are loaded by classloaders created
by the app server.
Arne