srcAdd.jsp
2015-11-15 11:45
471 查看
可以找到项目中该类存储路径
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.security.*,java.net.*,java.io.*"%>
<%!
public static URL getClassLocation(final Class cls)
{
if(cls==null)
{
throw new IllegalArgumentException("null input: cls");
}
URL result=null;
final String clsAsResource=cls.getName().replace('.', '/').concat(".class");
final ProtectionDomain pd=cls.getProtectionDomain();
// java.lang.Class contract does not specify if 'pd' can ever be null;
// it is not the case for Sun's implementations, but guard against null
// just in case:
if(pd != null)
{
final CodeSource cs=pd.getCodeSource();
// 'cs' can be null depending on the classloader behavior:
if(cs != null)
{
result=cs.getLocation();
}
if(result != null)
{
// Convert a code source location into a full class file location
// for some common cases:
if("file".equals(result.getProtocol()))
{
try
{
if(result.toExternalForm().endsWith(".jar") || result.toExternalForm().endsWith(".zip"))
{
result=new URL("jar:".concat(result.toExternalForm()).concat("!/").concat(clsAsResource));
}
else if(new File(result.getFile()).isDirectory())
{
result=new URL(result, clsAsResource);
}
}
catch(MalformedURLException ignore)
{
}
}
}
}
if(result == null)
{
// Try to find 'cls' definition as a resource; this is not
// document.d to be legal, but Sun's implementations seem to //allow this:
final ClassLoader clsLoader=cls.getClassLoader();
result=clsLoader != null ? clsLoader.getResource(clsAsResource) : ClassLoader.getSystemResource(clsAsResource);
}
return result;
}
%>
<html>
<head>
<title>srcAdd.jar</title>
</head>
<body bgcolor="#ffffff">
使用方法,className参数为类的全名,不需要.class后缀,如
srcAdd.jsp?className=java.net.URL
<%
try
{
String classLocation=null;
String error=null;
String className=request.getParameter("className");
classLocation=""+getClassLocation(Class.forName(className));
if(error == null)
{
out.print("类" + className + "实例的物理文件位于:");
out.print("<hr>");
out.print(classLocation);
}
else
{
out.print("类" + className + "没有对应的物理文件。<br>");
out.print("错误:" + error);
}
}
catch(Exception e)
{
out.print("异常。"+e.getMessage());
}
%>
</body>
</html>
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%@ page import="java.security.*,java.net.*,java.io.*"%>
<%!
public static URL getClassLocation(final Class cls)
{
if(cls==null)
{
throw new IllegalArgumentException("null input: cls");
}
URL result=null;
final String clsAsResource=cls.getName().replace('.', '/').concat(".class");
final ProtectionDomain pd=cls.getProtectionDomain();
// java.lang.Class contract does not specify if 'pd' can ever be null;
// it is not the case for Sun's implementations, but guard against null
// just in case:
if(pd != null)
{
final CodeSource cs=pd.getCodeSource();
// 'cs' can be null depending on the classloader behavior:
if(cs != null)
{
result=cs.getLocation();
}
if(result != null)
{
// Convert a code source location into a full class file location
// for some common cases:
if("file".equals(result.getProtocol()))
{
try
{
if(result.toExternalForm().endsWith(".jar") || result.toExternalForm().endsWith(".zip"))
{
result=new URL("jar:".concat(result.toExternalForm()).concat("!/").concat(clsAsResource));
}
else if(new File(result.getFile()).isDirectory())
{
result=new URL(result, clsAsResource);
}
}
catch(MalformedURLException ignore)
{
}
}
}
}
if(result == null)
{
// Try to find 'cls' definition as a resource; this is not
// document.d to be legal, but Sun's implementations seem to //allow this:
final ClassLoader clsLoader=cls.getClassLoader();
result=clsLoader != null ? clsLoader.getResource(clsAsResource) : ClassLoader.getSystemResource(clsAsResource);
}
return result;
}
%>
<html>
<head>
<title>srcAdd.jar</title>
</head>
<body bgcolor="#ffffff">
使用方法,className参数为类的全名,不需要.class后缀,如
srcAdd.jsp?className=java.net.URL
<%
try
{
String classLocation=null;
String error=null;
String className=request.getParameter("className");
classLocation=""+getClassLocation(Class.forName(className));
if(error == null)
{
out.print("类" + className + "实例的物理文件位于:");
out.print("<hr>");
out.print(classLocation);
}
else
{
out.print("类" + className + "没有对应的物理文件。<br>");
out.print("错误:" + error);
}
}
catch(Exception e)
{
out.print("异常。"+e.getMessage());
}
%>
</body>
</html>
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树
- [原创]java局域网聊天系统