package org.util;
import java.io.File;
import java.io.IOException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import DC.Utility.Configuration;
public class ClassLoad {
static URLClassLoader loader = null;
/**
* 在默认的目录加载jar
* @return
*/
public static URLClassLoader getClassLoad() {
Configuration config = new Configuration(Configuration.getRoot()+File.separator
+ "classpath.properties");
if (loader == null) {
URLClassLoaderUtil urlClass = new URLClassLoaderUtil(config
.getValue("classpath1"), false);
loader = urlClass.getClassLoader();
}
return loader;
}
/**
* 在给定的路径加载jar文件
* @param url 指定路径
* @param isFile true 文件 false 目录
* @return
*/
public static URLClassLoader getClassLoad(String url, boolean isFile)
{
URLClassLoaderUtil urlClass = new URLClassLoaderUtil(url, false);
URLClassLoader loader = urlClass.getClassLoader();
return loader;
}
}
class URLClassLoaderUtil {
URLClassLoader classLoader = null;// URLClassLoader类载入器
private String jarFileName;
private boolean isFile = true;
List<String> jars = new ArrayList<String>(0);
/**
* 加载具体的某一jar包
*
* @param jarFileName
*/
public URLClassLoaderUtil(String jarFileName) {
this.setJarFileName(jarFileName);
this.inti();
}
/**
* 加载jar包 当isFile为false是加载文件夹下所有jar
*
* @param jarFileName
* 路径
* @param isFile
*/
public URLClassLoaderUtil(String jarFileName, boolean isFile) {
this.setJarFileName(jarFileName);
this.setFile(isFile);
this.inti();
}
/**
*初始化,读取文件信息,并将jar文件路径加入到classpath
*/
private void inti() {
// 添加jar文件路径到classpath
if (this.isFile) {
File f = new File(jarFileName);
addPath(f.toURI().toString());
jars.add(f.getAbsolutePath());
} else {
ReadJarFile df = new ReadJarFile(jarFileName, new String[] { "jar",
"zip" });
this.jars = df.getFiles();
List<String> jarURLs = df.getFilesURL();
Object[] o = jarURLs.toArray();
addPath(o);
}
}
分享到:
相关推荐
在Java编程语言中,动态加载jar包是一种常见的需求,它允许程序在运行时根据需要加载新的功能或更新现有的模块,增强了软件的灵活性和可扩展性。动态加载jar包技术主要涉及Java的反射机制、类加载器和插件系统。下面...
在Java中,动态加载jar包的核心在于使用`java.lang.ClassLoader`类或其子类。ClassLoader是Java虚拟机(JVM)的一部分,负责将类的字节码加载到JVM中并转换为Class对象。默认情况下,JVM会使用系统类加载器来查找和...
在Java编程语言中,动态加载jar文件是一种关键的特性,它允许程序在运行时加载新的类库或组件,而不是在编译时静态地链接。这种技术对于实现插件式开发或者模块化系统至关重要,因为它提供了灵活性和可扩展性。下面...
在Java编程中,动态加载JAR或ZIP包是一项重要的技术,它允许程序在运行时根据需求加载外部库,而不是在编译时静态地链接。这种技术对于实现插件化、模块化系统,或者处理频繁更新的组件非常有用。下面将详细讲解如何...
Java URLClassLoader 是Java标准库中的一个类加载器,它允许我们动态地从指定的URL位置加载类和资源。这个功能在开发插件系统、热部署或者处理多种版本库的场景中非常有用。从JDK 1.2开始,`java.net.URLClassLoader...
在Java编程中,有时我们需要在运行时动态地编译源代码文件,并将其打包成可执行的JAR(Java Archive)文件。这样的需求通常出现在我们希望根据用户输入或特定条件生成并执行新的代码逻辑时。本教程将深入讲解如何...
JAVA动态加载JAR文件以及反射调用其方法
Java 配置数据库 Jar 包操作 Java 配置数据库 Jar 包操作是指在 Java 项目中将 MySQL 数据库的 Jar 包导入到项目中,以便使用 JDBC 连接数据库的操作。下面是关于 Java 配置数据库 Jar 包操作的详细知识点: 什么...
在Java中实现Oracle数据库连接,我们需要用到特定的JAR包,这些JAR包通常包含在Oracle的数据库客户端或者Oracle JDBC驱动程序中。 首先,Oracle JDBC驱动分为两种类型: Thin驱动和 Thick驱动。Thin驱动是一种纯...
在实际项目开发中,将这些JAR包添加到项目的类路径(Classpath)中是至关重要的,因为Java虚拟机在运行时需要找到这些依赖才能正常工作。可以通过IDE(如Eclipse、IntelliJ IDEA)的构建工具(如Maven、Gradle)来...
在Java编程环境中,动态加载jar包是一项重要的技术,它允许我们无需重启服务器就能引入新的功能或更新已有的类。这在大型系统维护和迭代中尤为关键,因为它提高了系统的灵活性和可扩展性。以下是对"动态加载jar包的...
综上所述,"springboot+java类热加载"是一个涉及SpringBoot框架、Java类加载机制、动态编译以及依赖管理的综合技术话题。通过理解这些概念和相关工具,开发者可以更高效地进行迭代开发,提高生产力。在实际应用中,...
NULL 博文链接:https://genius.iteye.com/blog/296000
为了使用这个驱动,你需要在Java项目中引入对应的jar包,并通过JDBC API建立与SQL Server的连接。 例如,以下代码展示了如何使用SQL Server JDBC驱动建立连接: ```java import java.sql.Connection; import java....
Java集成Kettle所有Jar包是一项常见的任务,尤其对于那些在数据处理、ETL(提取、转换、加载)项目中使用Kettle(也称为Pentaho Data Integration或PDI)的开发者来说。Kettle是一个强大的开源数据集成工具,它提供...
3. 在`CLASSPATH`中添加JAR包路径,如`%CLASSPATH%;E:\mysqlJdbc.jar`。注意,路径之间使用分号(`;`)分隔。 完成上述步骤后,即可在任何地方运行依赖于`mysqlJdbc.jar`的Java程序,无需在命令行中指定额外参数。 ...
这些JAR文件包含了编译后的字节码,可以被Java虚拟机(JVM)加载和执行。 在"压缩包子文件的文件名称列表"中提到的"框架jar包",这意味着这个压缩包内可能包含了各种Java框架的JAR文件。Java框架如Spring、...
7. **服务提供者接口(SPI)**:Java的ServiceLoader类允许动态发现和加载实现特定接口的JAR包,这在插件架构中非常有用。 8. **META-INF目录**:JAR文件内部的META-INF目录可以包含MANIFEST.MF文件,其中记录了...
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...