编写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包,这些JAR包通常包含在Oracle的数据库客户端或者Oracle JDBC驱动程序中。 首先,Oracle JDBC驱动分为两种类型: Thin驱动和 Thick驱动。Thin驱动是一种纯...
对于标签中提到的`jar`包,它通常是指Apache POI的库文件,你需要将其添加到项目的类路径中才能使用。在Java项目中,这可以通过IDE的依赖管理功能(如Maven或Gradle)或者手动将jar包放入`lib`目录并配置`classpath`...
Java 配置数据库 Jar 包操作 Java 配置数据库 Jar 包操作是指在 Java 项目中将 MySQL 数据库的 Jar 包导入到项目中,以便使用 JDBC 连接数据库的操作。下面是关于 Java 配置数据库 Jar 包操作的详细知识点: 什么...
然而,在Java应用程序中集成Kettle,需要将相关的Jar包添加到项目的类路径中,以便能够调用其API来执行工作流或转换。 首先,要理解Java与Kettle的集成,我们需要知道Kettle的主要组件。Kettle由以下几部分组成: ...
JVM(Java虚拟机)能够识别JAR文件,并从中加载类和资源。通常,JAR文件用于封装第三方库或自定义模块,以便于在不同的Java项目中重用。 ### 二、执行Java命令引入外部JAR包的方法 #### 方法1:修改系统环境变量 ...
Java URLClassLoader 是Java标准库中的一个类加载器,它允许我们动态地从指定的URL位置加载类和资源。这个功能在开发插件系统、热部署或者处理多种版本库的场景中非常有用。从JDK 1.2开始,`java.net.URLClassLoader...
在跨平台开发中,有时需要将不同编程语言的组件整合在一起,例如在C#应用中调用Java类或使用Java的jar包。本篇将详细阐述如何在C#环境中实现对Java类的调用以及使用Java的jar包。 首先,要理解C#与Java之间的互操作...
在实际项目开发中,将这些JAR包添加到项目的类路径(Classpath)中是至关重要的,因为Java虚拟机在运行时需要找到这些依赖才能正常工作。可以通过IDE(如Eclipse、IntelliJ IDEA)的构建工具(如Maven、Gradle)来...
在Java项目中使用Apache HttpClient,首先需要将`httpcomponents-client-4.5.5.jar`添加到项目的类路径中。这个jar包包含了HttpClient的核心类和其他依赖,例如HTTP协议解析的`httpcore`模块,以及处理HTTP连接管理...
通过导入以上jar包并使用其中提供的类和方法,开发者可以在Java应用程序中轻松地发起HTTP请求,无论是简单的GET请求还是复杂的POST请求,甚至可以处理代理IP和缓存策略。同时,这些库还支持SSL/TLS加密,确保了通信...
动态加载jar包技术主要涉及Java的反射机制、类加载器和插件系统。下面我们将深入探讨这些知识点。 首先,了解Java的反射机制是理解动态加载的基础。Java反射API允许我们在运行时检查类、接口、字段和方法的信息,...
在Java编程中,有时我们需要动态地加载外部JAR文件,并执行其中特定的类方法,这在插件系统、模块化应用或动态扩展性需求中尤为常见。本篇将详细讲解如何实现这一目标。 首先,理解JAR(Java Archive)文件是Java...
通常,数据库供应商会提供特定的JDBC驱动jar包,例如`mysql-connector-java.jar`,开发者需要将其添加到项目类路径中以进行数据库操作。 2. **数据库jtds**: jTDS是一个开源的JDBC驱动,主要针对Microsoft SQL ...
Java FTP上传JAR包是一项常见的任务,特别是在自动化部署或者远程更新系统组件时。在这个过程中,我们需要使用Java编程语言,结合FTP(File Transfer Protocol)协议来实现在服务器上上传JAR文件。以下是一些相关的...
在使用这个"JAVA窗体的jar包"时,开发者首先需要将其添加到项目的类路径中,然后通过import语句引用其中的类和方法。对于sql.jar,可能需要初始化数据库连接,执行查询或事务处理。对于皮肤包,可以动态切换LookAnd...
在实际开发中,将这些jar包添加到项目的类路径(classpath)中,就可以通过Java代码创建Zookeeper客户端,执行诸如创建节点、读取数据、设置监视点等操作。例如: ```java ZooKeeper zookeeper = new ZooKeeper(...
在实际开发中,这些jar包通常会放入项目的类路径(classpath)中,以便Java虚拟机(JVM)能够找到并加载它们。为了使用Java 3D,开发者需要在代码中导入相关的包,并创建和配置3D场景。例如,创建一个简单的3D立方体...
为了使用这个驱动,你需要在Java项目中引入对应的jar包,并通过JDBC API建立与SQL Server的连接。 例如,以下代码展示了如何使用SQL Server JDBC驱动建立连接: ```java import java.sql.Connection; import java....
Java的JAR(Java Archive)文件是Java平台特有的打包格式,它将多个类文件、资源文件和其他元数据打包成一个单一的归档文件,便于分发、存储和执行。"你们想要的java jar包全都有"这个标题暗示了这是一个包含各种...