srcAdd.jsp

可以找到项目中该类存储路径

<%@ 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>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值