iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Java 使用反射调用jar包中的类方式
  • 427
分享到

Java 使用反射调用jar包中的类方式

2024-04-02 19:04:59 427人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

下面讲展示的是从image.jar包中调用image.Buddy类的方法。 public class Main { public static void main(St

下面讲展示的是从image.jar包中调用image.Buddy类的方法。


public class Main { 
    public static void main(String[] args) { 
        try {
 
//          两种方式都可以
            URL url = new File("/Users/wuchen/Documents/IntelliJidea/Applet/out/production/Applet/image.jar").toURI().toURL();
//          URL url = new URL("file:/Users/wuchen/Documents/IntelliJIDEA/Applet/out/production/Applet/image.jar"); 
            URL[] urls = new URL[]{ url }; 
            URLClassLoader loader = new URLClassLoader(urls); 
            Class c = loader.loadClass("image.Buddy"); 
            Object o = c.newInstance(); 
            Method m = c.getMethod("sleep"); 
            m.invoke(o);
 
        } catch (NoSuchMethodException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        } catch (InstantiationException e) {
            e.printStackTrace();
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        } catch (InvocationTargetException e) {
            e.printStackTrace();
        } catch (MalfORMedURLException e) {
            e.printStackTrace();
        }
    }
}

有几点需要注意

第一:

URL 是 "file:/Users/wuchen/Documents/IntelliJIDEA/Applet/out/production/Applet/image.jar"

image.jar后面没有斜杠了

第二:

类名是 image.Buddy,不要因为URL里面有image就把image.Buddy中的image省略掉。

第三:

Buddy.class应该放在image文件夹内,然后打包image文件夹,而不是打包image文件夹里的所有文件,再把包名改成image.jar

补充:java动态载入指定的类或者jar包反射调用其方法

序言

有时候。项目中会用到java动态载入指定的类或者jar包反射调用其方法来达到模块的分离,使各个功能之间耦合性大大减少,更加的模块化。代码利用率更高。模式中的代理模式就用到java的这一机制。

下边就让我们通过代码来看看怎样实现此功能。

代码具体


package loadjarclass;
import java.io.File;
import java.lang.reflect.Method;
import java.net.URL;
import java.net.URLClassLoader;
import org.junit.Test;
public class LoadJarClassTest {
 
 @Test
 public void testLoadClass() throws Exception{
  
  File file=new File("D:/test");//类路径(包文件上一层)
  URL url=file.toURI().toURL();
  ClassLoader loader=new URLClassLoader(new URL[]{url});//创建类载入器
  //import com.sun.org.apache.bcel.internal.util.ClassLoader;
  //ClassLoader classLoader = new ClassLoader(new String[]{""});//类路径
  Class<?> cls=loader.loadClass("loadjarclass.TestTest");//载入指定类。注意一定要带上类的包名
  Object obj=cls.newInstance();//初始化一个实例
  Method method=cls.getMethod("printString",String.class,String.class);//方法名和相应的參数类型
  Object o=method.invoke(obj,"chen","leixing");//调用得到的上边的方法method
  System.out.println(String.valueOf(o));//输出"chenleixing"
  
  
  file=new File("D:/test/commons-lang3.jar");//jar包的路径
  url=file.toURI().toURL();
  loader=new URLClassLoader(new URL[]{url});//创建类载入器
  cls=loader.loadClass("org.apache.commons.lang3.StringUtils");//载入指定类,注意一定要带上类的包名
  method=cls.getMethod("center",String.class,int.class,String.class);//方法名和相应的各个參数的类型
  o=method.invoke(null,"chen",Integer.valueOf(10),"0");//调用得到的上边的方法method(静态方法,第一个參数能够为null)
  System.out.println(String.valueOf(o));//输出"000chen000","chen"字符串两边各加3个"0"字符串
 }
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。如有错误或未考虑完全的地方,望不吝赐教。

--结束END--

本文标题: Java 使用反射调用jar包中的类方式

本文链接: https://www.lsjlt.com/news/123063.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Java 使用反射调用jar包中的类方式
    下面讲展示的是从image.jar包中调用image.Buddy类的方法。 public class Main { public static void main(St...
    99+
    2022-11-12
  • 怎么在Java中利用反射调用jar包中的类
    怎么在Java中利用反射调用jar包中的类?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。下面讲展示的是从image.jar包中调用image.Buddy类的方法。public&...
    99+
    2023-06-14
  • java如何调用jar包的类
    要调用一个JAR包中的类,您需要执行以下步骤:1. 将JAR包添加到Java项目的类路径中。您可以在命令行中使用`-cp`参数,或在...
    99+
    2023-08-08
    java jar
  • java反射调用类的方法是什么
    Java反射调用类的方法可以通过以下步骤实现:1. 获取需要调用方法的类的Class对象,可以使用`Class.forName()`...
    99+
    2023-08-18
    java
  • 怎么在java中使用反射调用方法
    这篇文章将为大家详细讲解有关怎么在java中使用反射调用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发...
    99+
    2023-06-14
  • 如何在java中使用反射调用方法
    这篇文章将为大家详细讲解有关如何在java中使用反射调用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的...
    99+
    2023-06-14
  • Python调用Jar包的两种方式小结
    目录概览环境配置安装JDK安装JPype(如需要)调用示例java -jarJPype再多说一点关于JPype总结概览 因工作场景,需要在python代码里调用Jar包来实现一些功能...
    99+
    2022-12-08
    Python调用Jar包 Python调用Jar Python Jar包调用
  • Java反射 Field类的使用全方位解析
    Field 提供有关类或接口的单个字段的信息,以及对它的动态访问权限。反射的字段可能是一个类(静态)字段或实例字段。 Field 成员变量的介绍 每个成员变量有类型和值。 java....
    99+
    2022-11-12
  • jar命令打包java应用和java打jar包的几种方式详解
    一、Jar命令打包java应用的用法 jar是标准的java打包命令,位于JAVA_HOME/bin/目录下面。主要功能是将多个文件打包成一个单独的jar文件。 创建jar文件 jar c[v0Mmfe] [manifest] [jar...
    99+
    2023-09-06
    java 开发语言
  • Python中使用jpype调用Jar包中的实现方法
    目录使用jpype调用Jar包中的实现方法安装使用说明代码jpype调用jar包“Class xx not found“问题环境代码问题检查点解决总结使用jp...
    99+
    2022-12-08
    Python使用jpype jpype调用Jar包 Python使用jpype调用jar
  • java反射调用方法NoSuchMethodException的解决方案
    目录java反射调用方法NoSuchMethodExceptionNoSuchMethodException问题总结1、编译异常,这个很容易发现并解决2、编译正常,运行报错java反...
    99+
    2022-11-13
  • 如何使用IDEA查看jar包,jar包的正确打开方式
    原理就用 IDEA 是把 jar 包添加为 Libraries,然后展开后即可查看。 因为是编译后的 class 文件,所以注释是没有的。 还有一种方法是把 jar 包的扩展名改为 rar,然后用压缩...
    99+
    2023-09-01
    intellij-idea jar java
  • java中使用jar包乱码解决方法
    java使用jar包乱码解决方法:修改Eclipse中文本文件的默认编码:windows->Preferences->general->Workspace->Text file encoding设置为UTF-8。修改JAVA源文件的默认编码...
    99+
    2021-06-03
    java 乱码
  • Golang使用反射的动态方法调用详解
    Go是一种静态类型的语言,提供了大量的安全性和性能。静态类型的好处之一是,编译器可以在编译时捕获错误,防止在运行时发生。 在Go中,方法是用语法func(receiverName r...
    99+
    2023-03-14
    Golang反射动态方法调用 Golang反射动态方法 Golang反射
  • Golang使用反射的动态方法怎么调用
    这篇文章主要讲解了“Golang使用反射的动态方法怎么调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Golang使用反射的动态方法怎么调用”吧!Go是一种静态类型的语言,提供了大量的安全...
    99+
    2023-07-05
  • Java反射的setAccessible()方法怎么使用
    本篇内容介绍了“Java反射的setAccessible()方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、 什么是Java的...
    99+
    2023-07-02
  • java中反射和注解的简单使用方法
    目录什么反射?Java反射机制提供的功能反射相关的主要APIClass 类获取Class 类的实例( 四种方法)哪些类型可以有Class 对象?演示Class类的常用方法有了Clas...
    99+
    2022-11-12
  • 如何使用Java注解和反射实现Junit4中的用例调用
    这篇文章主要讲解了“如何使用Java注解和反射实现Junit4中的用例调用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何使用Java注解和反射实现Junit4中的用例调用”吧!实例需求需...
    99+
    2023-06-15
  • 使用springboot的jar包能够以service方式启动
    目录springboot jar包以service启动场景过程其他SpringBoot启动服务的三种方式1.IDEA启动2.命令行启动3.命令行编译为jar启动springboot ...
    99+
    2022-11-12
  • Java怎么优雅的调用dubbo同时不使用其它jar包
    本文小编为大家详细介绍“Java怎么优雅的调用dubbo同时不使用其它jar包”,内容详细,步骤清晰,细节处理妥当,希望这篇“Java怎么优雅的调用dubbo同时不使用其它jar包”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作