`

java 类从哪个jar包加载的

阅读更多

编写srcAdd.jsp,然后拷贝到web应用的根目录下面,通过以下方式即可查看JVM是从那个类包加载指定类:

 

localhost:9090/srcAdd.jsp?className=java.net.URL

 

srcAdd.jsp内容:

<%@page contentType="text/html; charset=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后缀,如下面则是查询加载类java.net.URL的jar包

  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连接oracle数据库jar包

    在Java中实现Oracle数据库连接,我们需要用到特定的JAR包,这些JAR包通常包含在Oracle的数据库客户端或者Oracle JDBC驱动程序中。 首先,Oracle JDBC驱动分为两种类型: Thin驱动和 Thick驱动。Thin驱动是一种纯...

    java的workbook类的jar包

    对于标签中提到的`jar`包,它通常是指Apache POI的库文件,你需要将其添加到项目的类路径中才能使用。在Java项目中,这可以通过IDE的依赖管理功能(如Maven或Gradle)或者手动将jar包放入`lib`目录并配置`classpath`...

    java配置数据库jar包操作

    Java 配置数据库 Jar 包操作 Java 配置数据库 Jar 包操作是指在 Java 项目中将 MySQL 数据库的 Jar 包导入到项目中,以便使用 JDBC 连接数据库的操作。下面是关于 Java 配置数据库 Jar 包操作的详细知识点: 什么...

    java集成kettle所有jar包

    然而,在Java应用程序中集成Kettle,需要将相关的Jar包添加到项目的类路径中,以便能够调用其API来执行工作流或转换。 首先,要理解Java与Kettle的集成,我们需要知道Kettle的主要组件。Kettle由以下几部分组成: ...

    关于执行java命令引入外部jar包方法

    JVM(Java虚拟机)能够识别JAR文件,并从中加载类和资源。通常,JAR文件用于封装第三方库或自定义模块,以便于在不同的Java项目中重用。 ### 二、执行Java命令引入外部JAR包的方法 #### 方法1:修改系统环境变量 ...

    Java URLClassLoader动态加载jar包1

    Java URLClassLoader 是Java标准库中的一个类加载器,它允许我们动态地从指定的URL位置加载类和资源。这个功能在开发插件系统、热部署或者处理多种版本库的场景中非常有用。从JDK 1.2开始,`java.net.URLClassLoader...

    C#调用java类、jar包方法

    在跨平台开发中,有时需要将不同编程语言的组件整合在一起,例如在C#应用中调用Java类或使用Java的jar包。本篇将详细阐述如何在C#环境中实现对Java类的调用以及使用Java的jar包。 首先,要理解C#与Java之间的互操作...

    java的jar包

    在实际项目开发中,将这些JAR包添加到项目的类路径(Classpath)中是至关重要的,因为Java虚拟机在运行时需要找到这些依赖才能正常工作。可以通过IDE(如Eclipse、IntelliJ IDEA)的构建工具(如Maven、Gradle)来...

    java-http请求jar包

    在Java项目中使用Apache HttpClient,首先需要将`httpcomponents-client-4.5.5.jar`添加到项目的类路径中。这个jar包包含了HttpClient的核心类和其他依赖,例如HTTP协议解析的`httpcore`模块,以及处理HTTP连接管理...

    java 3D依赖的jar包

    在实际开发中,这些jar包通常会放入项目的类路径(classpath)中,以便Java虚拟机(JVM)能够找到并加载它们。为了使用Java 3D,开发者需要在代码中导入相关的包,并创建和配置3D场景。例如,创建一个简单的3D立方体...

    java实现http协议jar包

    通过导入以上jar包并使用其中提供的类和方法,开发者可以在Java应用程序中轻松地发起HTTP请求,无论是简单的GET请求还是复杂的POST请求,甚至可以处理代理IP和缓存策略。同时,这些库还支持SSL/TLS加密,确保了通信...

    java 动态加载jar包

    动态加载jar包技术主要涉及Java的反射机制、类加载器和插件系统。下面我们将深入探讨这些知识点。 首先,了解Java的反射机制是理解动态加载的基础。Java反射API允许我们在运行时检查类、接口、字段和方法的信息,...

    Java 自动加载JAR文件并运行其中的类方法

    在Java编程中,有时我们需要动态地加载外部JAR文件,并执行其中特定的类方法,这在插件系统、模块化应用或动态扩展性需求中尤为常见。本篇将详细讲解如何实现这一目标。 首先,理解JAR(Java Archive)文件是Java...

    java全部用的jar包

    通常,数据库供应商会提供特定的JDBC驱动jar包,例如`mysql-connector-java.jar`,开发者需要将其添加到项目类路径中以进行数据库操作。 2. **数据库jtds**: jTDS是一个开源的JDBC驱动,主要针对Microsoft SQL ...

    java实现ftp上传jar包

    Java FTP上传JAR包是一项常见的任务,特别是在自动化部署或者远程更新系统组件时。在这个过程中,我们需要使用Java编程语言,结合FTP(File Transfer Protocol)协议来实现在服务器上上传JAR文件。以下是一些相关的...

    JAVA窗体的jar包

    在使用这个"JAVA窗体的jar包"时,开发者首先需要将其添加到项目的类路径中,然后通过import语句引用其中的类和方法。对于sql.jar,可能需要初始化数据库连接,执行查询或事务处理。对于皮肤包,可以动态切换LookAnd...

    java连接zookeeper的jar包

    在实际开发中,将这些jar包添加到项目的类路径(classpath)中,就可以通过Java代码创建Zookeeper客户端,执行诸如创建节点、读取数据、设置监视点等操作。例如: ```java ZooKeeper zookeeper = new ZooKeeper(...

    java数据库驱动jar包

    为了使用这个驱动,你需要在Java项目中引入对应的jar包,并通过JDBC API建立与SQL Server的连接。 例如,以下代码展示了如何使用SQL Server JDBC驱动建立连接: ```java import java.sql.Connection; import java....

    你们想要的java jar包全都有

    Java的JAR(Java Archive)文件是Java平台特有的打包格式,它将多个类文件、资源文件和其他元数据打包成一个单一的归档文件,便于分发、存储和执行。"你们想要的java jar包全都有"这个标题暗示了这是一个包含各种...

Global site tag (gtag.js) - Google Analytics