<%@ 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>
分享到:
相关推荐
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)是Java虚拟机(JVM)的重要组成部分,它负责在运行时查找并加载类到JVM中。这个教程将深入探讨ClassLoader的工作原理、类型以及如何自定义类加载器。 一、Java ClassLoader 基础 1. 类...
在Java编程语言中,`ClassLoader`是一个至关重要的组件,它负责加载类到JVM(Java虚拟机)中。`ClassLoader`系统是Java平台的核心特性之一,使得程序可以在运行时动态地发现和加载新的类,从而实现代码的热更新和...
同一类加载器加载的类可以互相访问,而不同类加载器加载的类之间默认不可见,除非使用`ClassLoader.getSystemClassLoader()`等方法获取系统类加载器。 7. **JSP与Servlet的加载**:在Web应用中,JSP和Servlet的编译...
总的来说,"restx-classloader-0.33.1.zip" 和 "TubeSock.zip" 提供了构建现代 Java Web 应用所需的重要工具:一个用于管理类加载的框架组件和一个用于实现实时通信的客户端库。通过学习和使用这些开源项目,开发者...
Java虚拟机(JVM)中的ClassLoader是负责加载类到内存中的核心组件。它不仅承担着将字节码转换为可执行对象的重任,还参与了类生命周期的各个阶段,包括加载、验证、准备、解析、初始化、使用和卸载。这些阶段共同...
通过这些文档,你可以获得关于Java ClassLoader的全面理解,包括它的作用、工作流程、如何自定义以及它在整个Java生态系统中的位置。学习这些知识对于提升你的Java编程技能,尤其是开发复杂和动态的应用程序时,是...
在Java编程语言中,ClassLoader是一个至关重要的组成部分,它负责加载类到JVM(Java虚拟机)中。理解ClassLoader的工作原理以及如何定制它,对于深入学习Java的运行机制和进行高级应用开发具有重要意义。本篇文章将...
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编程中,`java.lang.StackOverflowError` 是一个常见的运行时异常,它通常发生在程序执行过程中,当Java虚拟机(JVM)的调用栈溢出时。调用栈是每个线程用来存储方法调用信息的数据结构,当递归调用过深或者...
大多数应用类是由SystemClassLoader加载的,可以通过`ClassLoader.getSystemClassLoader()`获取。 二、ClassLoader的体系结构 ClassLoader形成一个树状结构,BootstrapClassLoader是根节点,ExtensionClassLoader...
破解java加密的rt.jar,在classloader植入破解代码,默认输出到c:/TEMP/classes/目录。使用方法:只要下载本rt.jar,然后替换掉jdk1.8.0_25\jre\lib目录下的rt.jar。然后运行你需要破解的java程序即可,如果你的java...
### Java虚拟机中ClassLoader概述与双亲委托机制详解 #### 一、ClassLoader概念与作用 在Java编程语言中,`ClassLoader`是一个非常重要的组件,它负责加载程序运行所需的类文件到Java虚拟机(JVM)中。`ClassLoader`...
用户还可以自定义类加载器,继承`java.lang.ClassLoader`,实现自己的类加载策略。类加载器可以在预期需要某个类时预加载,但如果预加载失败,只有在类被首次主动使用时才会抛出错误。 连接阶段的验证是保证类正确...
4. `ClassLoader.getSystemResource("")`:获取系统类路径的根路径,如`file:/D/workspace/jbpmtest3/bin/`。 5. `Thread.currentThread().getContextClassLoader().getResource("")`:获取当前线程上下文类加载器的...
3. **通过`ClassLoader.loadClass()`方法动态加载**:提供了更多的灵活性,可以根据不同的需求加载不同的类。 这三种方式各有特点,具体选择哪种方式取决于实际的应用场景。 #### 六、总结 Java的类加载机制是JVM...
jar包,官方版本,自测可用
Java ClassLoader机制是Java运行时环境中的核心组件之一,它负责加载类到JVM(Java虚拟机)中,使得程序能够执行。理解ClassLoader的工作原理对于优化应用性能、处理类加载问题以及实现自定义加载器至关重要。 首先...