<%@ page language="java" contentType="text/html; charset=GBK" %>
<%@ page import="java.net.URL"%>
<%@ page import="java.net.URLClassLoader"%>
<%@ page import="java.util.Enumeration"%>
<!-- define function in jsp by can_do -->
<%!
private static String getPackageName(Object obj) {
return getPackageName(obj.getClass());
}
private static String getPackageName(Class clazz) {
Package pack = clazz.getPackage();
if (pack != null) {
return pack.getName();
}
return null;
}
%>
<html>
<head>
<title>retrieve class loader information</title>
<meta name="Generator" content="EditPlus">
<meta name="Author" content="">
<meta name="Keywords" content="">
<meta name="Description" content="">
</head>
<body>
<form name="uploadform" action="./checkClassLoader.jsp" method="post">
<%
String strClassFullPath=request.getParameter("className");
strClassFullPath=strClassFullPath==null?"":strClassFullPath;
%>
<input type="text" name="className" size="100" value="<%=strClassFullPath%>" /><br>
<%
String strClassLoadedNotFoundClassLoaderContent = "The specified class has been loaded,but not find its class loader,try other retrieving class loader method.";
String strClassLoadedNotFoundClassLoader="<font color='red' size='5'>"+strClassLoadedNotFoundClassLoaderContent+"</font><br>";
String strClassNotFoundContent="The specified class has NOT been loaded.please check whether it is existing or not. Maybe you misspell the class package or name.";
String strClassNotFound="<font color='red' size='5'>"+strClassNotFoundContent+"</font><br>";
Boolean isClassNotFound = false;
if (strClassFullPath==null ||strClassFullPath.trim().length()==0) {
out.println("please input your reviewed class full name.<br>");
}else{
Class specifiedClass = null;
ClassLoader strClassLoaderName = null;
URL oUrl = null;
URL url = null;
try {
specifiedClass = Class.forName(strClassFullPath);
} catch (NullPointerException e) {
//e.printStackTrace();
System.err.println(strClassLoadedNotFoundClassLoaderContent);
} catch (ClassNotFoundException e) {
System.err.println(strClassNotFoundContent);
isClassNotFound = true;
}
if (!isClassNotFound) {
strClassLoaderName = specifiedClass.getClassLoader();
String className = specifiedClass.getName();
String fileName = String.valueOf(String.valueOf(className.substring(className.lastIndexOf('.') + 1))).concat(".class");
int packLength = getPackageName(specifiedClass).length() + 8;
url = specifiedClass.getResource(fileName);
}
if (strClassLoaderName != null) {
oUrl = strClassLoaderName.getSystemResource(strClassFullPath);
/////begin//retrieve class's signature information //////
Object signer = specifiedClass.getSigners();
String strSignature = "";
if (signer != null) {
strSignature = signer.toString();
}
out.println("=strSignature is:=" + strSignature + "=end=<br>");
/////end//retrieve class's signature information //////
///////////begin//////
///////////end//////
Enumeration en = request==null?null:request.getHeaderNames();
while(en!=null&&en.hasMoreElements()){
String value = ""+en.nextElement();
System.out.println("key="+value+":value="+request.getHeader(value));
}
//out.println("=oUrl is:="+(oUrl==null?null:oUrl.toString())+"=end=<br>");
} else {
out.println((isClassNotFound?strClassNotFound:strClassLoadedNotFoundClassLoader));
}
out.println("=System ClassLoader(AppClassloader) is:="+ClassLoader.getSystemClassLoader()+"=end=<br>");
out.println("=AppClassLoader's parent(ExtClassLoader is the topest class loader) is:="+ClassLoader.getSystemClassLoader().getParent()+"=end=<br>");
out.println("=ExtClassLoader's parent is:="+ClassLoader.getSystemClassLoader().getParent().getParent()+"=end=<br>");
out.println("=strClassFullPath is:="+strClassFullPath+"=end=<br>");
out.println("=strClassLoaderName is:="+(strClassLoaderName== null?"":strClassLoaderName.toString())+"=end=<br>");
out.println("=current class's location is:="+(url==null?"":url.toString())+"=end=<br>");
}
%>
<%
String strUserDir = System.getProperty("user.dir");
String strApusicHome = System.getProperty("com.apusic.home");
String strApusicDomainHome = System.getProperty("com.apusic.domain.home");
out.println("=strUserDir[user.dir] is:="+strUserDir+"=end=<br>");
out.println("=strApusicHome[com.apusic.home] is:="+strApusicHome+"=end=<br>");
out.println("=strApusicDomainHome[com.apusic.domain.home] is:="+strApusicDomainHome+"=end=<br>");
//session share test
HttpSession tempSession = request.getSession();
tempSession.setAttribute("classPackage", strClassFullPath);
boolean isShareContext=true;
if (isShareContext) {
System.out.println("do nothing!");
} else {
request.getSession().getServletContext().setAttribute("defaultApp", tempSession);
}
%>
<input type="submit" name="btSubmit" value="submit">
<p>
for example:
<table>
<tr>
<td>
(1).org.apache.taglibs.i18n.BundleTEI[from WEB-INF/lib]
</td>
<tr>
<td>
(2).com.apusic.welcome.util.MiscUtils[from WEB-INF/classes]
</td>
</tr>
<tr>
<td>
(3).com.apusic.server.Main[from <Apusic_Home>/lib/apusic.jar]
</td>
</tr>
<tr>
<td>
(4).com.apusic.tools.script.shell.Main[from <Apusic_Home>/common/elite-api.jar]
</td>
</tr>
<tr>
<td>
(5).sun.misc.Timer[from <Java_Home>/jre/lib/rt.jar]
</td>
</tr>
</p>
</form>
</body>
</html>
分享到:
相关推荐
深入了解Java_ClassLoader,Bytecde.pdf
at java.lang.ClassLoader.loadClassHelper(ClassLoader.java:688) at java.lang.ClassLoader.loadClass(ClassLoader.java:667) at com.ibm.ws.bootstrap.ExtClassLoader.loadClass(ExtClassLoader.java:119) at...
破解java加密的ClassLoader.java,在classloader植入破解代码
Java ClassLoader Tutorial
Understanding the Java ClassLoader.pdf
Java ClassLoader定制实例
at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:252) at java.lang....
破解java加密的rt.jar,在classloader植入破解代码,默认输出到c:/TEMP/classes/目录。使用方法:只要下载本rt.jar,然后替换掉jdk1.8.0_25\jre\lib目录下的rt.jar。然后运行你需要破解的java程序即可,如果你的java...
JVM内存模型,类加载模式工作机制详细,内存屏障,类从被加载到虚拟机内存中开始,直到卸载出内存为止,它的整个生命周期包括了:加载、验证、准备、解析、初始化、使用和卸载这7个阶段。其中,验证、准备和解析这三...
java classloader classpath 张孝祥
深入Java虚拟机_ClassLoader
Java 虚拟机中ClassLoader 相关简介 双亲委托机制 Android 中ClassLoader 简介
1.java classloader 的概述 2.java classloader 的分类 3.自定义 java classloader
jar包,官方版本,自测可用
web类加载器的小例子,可以供大家参考,谢谢!
支持动态的重新加载一个已经存在的类,并且讲之前的旧的类卸载掉。
TubeSock.zip,用java a实现的websocket客户端用java实现的websocket客户端库
Exceptionin thread "AWT-EventQueue-0" java.lang.NoClassDefFoundError: org/... at java.lang.ClassLoader.loadClass(ClassLoader.java:307) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) ...9 more
理解Java ClassLoader机制