> Java > java지도 시간 > Java 클래스 로더 URLClassLoader를 사용하는 방법

Java 클래스 로더 URLClassLoader를 사용하는 방법

WBOY
풀어 주다: 2023-05-01 22:55:05
앞으로
1381명이 탐색했습니다.

클래스 로더 URLClassLoader의 간단한 데모

public class Test {
	public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, SecurityException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, IOException {
		URL[] urls = new URL[] {new URL("http://192.168.119.132:8080/images/animal.jar")};
		URLClassLoader classLoader = new URLClassLoader(urls);
		//加载类以后就可以得到 Class 对象了
		Class<?> clazz = classLoader.loadClass("com.learn.animal.Dog");
		classLoader.close();  //加载完类以后就可以删除了。
		//关闭 classLoader, 否则会造成 资源泄露  Resource leak
		//这里不使用默认的构造器,使用带参数的构造器 获取特殊的构造器
		Constructor<?> con = clazz.getDeclaredConstructor(String.class, int.class, int.class);
		//使用构造器创建对象
		Object ob = con.newInstance("小黑",12,50);
		//在调用 Dog 对象的 say 方法,返回对 Dog 对象自己的描述
		Method mtd0 = clazz.getMethod("say", new Class<?>[] {});  
		String dogSay = (String)mtd0.invoke(ob, new Object[] {});  
		System.out.println(dogSay);
		//再使用setter 方法,改变属性  模拟 Dog 对象,逐渐长大,变胖  哈哈!
		System.out.println("Three years later......");
		Method mtd1 = clazz.getMethod("setAge", int.class);
		mtd1.invoke(ob, 15);
		Method mtd2 = clazz.getMethod("setWeight", int.class);
		mtd2.invoke(ob, 70);
		//注意这些方法是有返回值的!  返回值都是 Object 类型,需要自己强转类型
		dogSay = (String)mtd0.invoke(ob, new Object[] {});  
		System.out.println(dogSay);
		System.out.println("It&#39;s over!");
	}
}
로그인 후 복사

여기의 URL 리소스는 가상 머신에 내장된 간단한 nginx 서버입니다. 저도 다른 사람들의 튜토리얼을 따라 구축했습니다. 하하. 그러나 조건이 없거나 더 간단하게 사용하려면 로컬 파일 시스템을 사용하면 됩니다.
file:///jar 패키지 주소를 사용하여 교체하세요. file:///jar包地址 这个替换就行了。

这里使用的 jar 包也很简单,但是我直接打成了 jar 包,只有 class 文件了,我反编译以下,把代码图片贴出来吧。
这个反编译不是全部代码,但是细节很简单,只有一个 say()

여기서 사용한 jar 패키지도 아주 간단하지만, 클래스 파일만 들어있는 jar 패키지에 직접 입력해봤습니다. 다음은 디컴파일해서 코드 사진 올려드리겠습니다.

이 디컴파일은 전체 코드는 아니지만 세부 사항은 매우 간단합니다. say() 메서드는 하나만 있으면 완료할 수 있습니다. Java 클래스 로더 URLClassLoader를 사용하는 방법

실행 중인 스크린샷이 있습니다. 여기서 -encoding utf-8은 사용할 인코딩 문자 세트를 지정합니다. 중국어가 있는 경우 cmd에서 실행되는 코드가 컴파일되지 않을 수 있기 때문입니다. Java 클래스 로더 URLClassLoader를 사용하는 방법

🎜🎜

위 내용은 Java 클래스 로더 URLClassLoader를 사용하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:yisu.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿