`
hpgary
  • 浏览: 82903 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Java 动态加载Jar包,并使用

    博客分类:
  • Java
 
阅读更多

  将一个jar包动态加载到java虚拟机中

 

import java.io.File;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;

import org.apache.commons.lang3.reflect.FieldUtils;

public class JarTools {

    protected static Method addURL = null ;
    static{
        try {
            addURL = URLClassLoader.class.getDeclaredMethod("addURL", new Class[] { URL.class }) ; 
            addURL.setAccessible(true);
        } catch (Exception e) {
        }
    }

    /**
     * 动态加载Jar包到内存中
     * */
    public static Object loadJar(String jarFile, String className) {
        try {
            File file = new File( jarFile ); 
            if (!file.exists()) {
                throw new RuntimeException(jarFile + "不存在");
            }
            addURL.invoke(ClassLoader.getSystemClassLoader(), new Object[] { file.toURI().toURL() }); 
            return Class.forName( className ,false , ClassLoader.getSystemClassLoader() ).newInstance(); 
        } catch (Exception e) {
            e.printStackTrace();
        } finally {

        }
        return null;
    }

    public static void main(String[] args) throws Exception {
        Object loadJar = loadJar("C:/commons-io-2.4.jar", "org.apache.commons.io.Charsets") ;
        Field field = loadJar.getClass().getField("UTF_8"); 
        System.out.println(FieldUtils.readDeclaredStaticField(loadJar.getClass(), field.getName()));
    }
}

 

1
1
分享到:
评论

相关推荐

    java 动态加载jar包

    在Java编程语言中,动态加载jar包是一种常见的需求,它允许程序在运行时根据需要加载新的功能或更新现有的模块,增强了软件的灵活性和可扩展性。动态加载jar包技术主要涉及Java的反射机制、类加载器和插件系统。下面...

    动态加载jar包

    同时,使用动态加载可以避免类冲突,因为自定义类加载器可以拥有自己的命名空间。 总结来说,动态加载jar包是Java编程中的一种高级技巧,它使程序具备了高度的灵活性和可扩展性。通过自定义类加载器和反射机制,...

    Java 动态加载jar文件示例

    在Java编程语言中,动态加载jar文件是一种关键的特性,它允许程序在运行时加载新的类库或组件,而不是在编译时静态地链接。这种技术对于实现插件式开发或者模块化系统至关重要,因为它提供了灵活性和可扩展性。下面...

    JAVA动态加载JAR zip包

    在Java编程中,动态加载JAR或ZIP包是一项重要的技术,它允许程序在运行时根据需求加载外部库,而不是在编译时静态地链接。这种技术对于实现插件化、模块化系统,或者处理频繁更新的组件非常有用。下面将详细讲解如何...

    Java URLClassLoader动态加载jar包1

    然后,使用`Class.forName()`方法,指定了要加载的类全名(包括包名)"org.javaweb.url.Url",并传入`URLClassLoader`实例作为上下文类加载器,这样就可以确保这个类是由这个特定的`URLClassLoader`加载的。...

    java动态编译指定java文件且将java文件生成jar

    在Java编程中,有时我们需要在运行时动态地编译源代码文件,并将其打包成可执行的JAR(Java Archive)文件。这样的需求通常出现在我们希望根据用户输入或特定条件生成并执行新的代码逻辑时。本教程将深入讲解如何...

    java配置数据库jar包操作

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

    JAVA动态加载JAR文件

    JAVA动态加载JAR文件以及反射调用其方法

    动态加载jar包的实现

    在Java编程环境中,动态加载jar包是一项重要的技术,它允许我们无需重启服务器就能引入新的功能或更新已有的类。这在大型系统维护和迭代中尤为关键,因为它提高了系统的灵活性和可扩展性。以下是对"动态加载jar包的...

    java的jar包

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

    java连接oracle数据库jar包

    Java连接Oracle数据库主要依赖于JDBC(Java Database Connectivity)...正确引入Oracle JDBC驱动JAR包,并理解其使用方法,是开发Java数据库应用的基础。在实际开发中,还需要注意错误处理、性能优化和安全性等问题。

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

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

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

    3. 在`CLASSPATH`中添加JAR包路径,如`%CLASSPATH%;E:\mysqlJdbc.jar`。注意,路径之间使用分号(`;`)分隔。 完成上述步骤后,即可在任何地方运行依赖于`mysqlJdbc.jar`的Java程序,无需在命令行中指定额外参数。 ...

    java集成kettle所有jar包

    Java集成Kettle所有Jar包是一项常见的任务,尤其对于那些在数据处理、ETL(提取、转换、加载)项目中使用Kettle(也称为Pentaho Data Integration或PDI)的开发者来说。Kettle是一个强大的开源数据集成工具,它提供...

    springboot+java类热加载

    综上所述,"springboot+java类热加载"是一个涉及SpringBoot框架、Java类加载机制、动态编译以及依赖管理的综合技术话题。通过理解这些概念和相关工具,开发者可以更高效地进行迭代开发,提高生产力。在实际应用中,...

    java数据库驱动jar包

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

    java语言开发jar包_jar包_java_

    7. **服务提供者接口(SPI)**:Java的ServiceLoader类允许动态发现和加载实现特定接口的JAR包,这在插件架构中非常有用。 8. **META-INF目录**:JAR文件内部的META-INF目录可以包含MANIFEST.MF文件,其中记录了...

    你们想要的java jar包全都有

    Java框架如Spring、Hibernate、Struts、Apache CXF、Play Framework等,都提供了自己的JAR包,以简化开发过程并提供特定的功能,如Web开发、持久化操作、服务调用等。 Spring框架是一个广泛应用的全面的开发框架,...

    JAVA加载网络 jar 包 运行类例子

    NULL 博文链接:https://genius.iteye.com/blog/296000

Global site tag (gtag.js) - Google Analytics