`
美丽的小岛
  • 浏览: 312812 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

URLClassLoader例子

    博客分类:
  • java
 
阅读更多

学着写一个servlet服务器,里面对servlet的处理就得把那个servlet动态加载进来后,然后再去调用用它的service方法,这样就能实现了用户写的业务了。这里记录一个把类加载入来,然后执行这个类。用URLClassLoader来加载。

首先在src中写一个test类,或接口也可以:

package com.lr.test;

public class test {
	public void show() {
		System.out.println("test:show()************************");
	}

}

 

写要加载的类(因为这个类应该是用户写的,放在src外的文件夹中,像下图放在webroot文件夹中,

 继承的那个test是在文件夹src里的,就好像Servlet):

import com.lr.test.test;

public class MyClass extends test {
	public void show() {
		System.out.println("MyClass:show() is test Loader!");
	}
}

写一个测试类:

package com.lr.junit.MyServer02;

import java.io.File;
import java.net.URL;
import java.net.URLClassLoader;
import java.net.URLStreamHandler;

import junit.framework.TestCase;

import com.lr.test.test;

public class testClassLoader extends TestCase {
	public void testLoader() throws Throwable, Exception {
		URL[] urls = new URL[1];
		URLStreamHandler streamHandler = null;
		File classPath = new File(System.getProperty("user.dir")
				+ File.separator + "webroot");
		String repository = (new URL("file", null, classPath.getCanonicalPath()
				+ File.separator)).toString();
		urls[0] = new URL(null, repository, streamHandler);
		URLClassLoader loader = new URLClassLoader(urls);// 
		Class<?> myClass = loader.loadClass("MyClass");
		test t = (test) myClass.newInstance();// 实例化一个对象
		t.show();
	}
}

 测试结果为:

MyClass:show() is test Loader!

 

  • 大小: 4.4 KB
1
1
分享到:
评论

相关推荐

    ClassLoaderTest:测试如何正确关闭类加载器,以便可以关闭基础jar文件上的文件句柄

    这个例子中,我们首先创建了一个URLClassLoader,加载了指定的jar文件,然后执行了其中的类。之后,我们使用反射获取并关闭了URLClassLoader内部的JarFile实例。最后,如果我们的自定义类加载器实现了Closeable接口...

    java 反射运行时加载外部jar到Tomcat StandardClassLoader1

    URLClassLoader c = (URLClassLoader) getClass().getClassLoader().getParent().getParent(); ``` 2. 创建一个 `URL` 对象,表示要加载的 JAR 文件的 URL。 ```java URL jar = new URL(...

    详解Java动态加载数据库驱动

    注意,这个例子没有涉及数据库连接池,实际项目中通常会结合像 C3P0、HikariCP 或者 Druid 这样的连接池库来管理数据库连接,提高性能和资源利用率。在动态加载驱动的情况下,需要自定义连接池实现以配合动态加载...

    java 动态编译.java文件,动态运行类 _1.3

    在这个例子中,我们首先获取系统Java编译器实例,然后创建一个标准文件管理器,用于处理源文件对象。接着,我们将要编译的.java文件转换为`JavaFileObject`,并调用`compiler.compile()`进行编译。 编译完成后,...

    定义ClassLoader调用外部jar包

    在这个例子中,`MyClassLoader`构造函数接收一个jar文件路径,然后添加到URLClassLoader的URL列表中。`findClass`方法覆盖了父类的实现,从jar中加载类的字节码,然后调用`defineClass`方法将字节码转换为Class对象...

    JAVA文件中调用已编译的.CLASS的类.doc

    在这个例子中,`MyClassLoader`继承了`URLClassLoader`。 - `MyClassLoader`构造函数接收一个URL参数,用于指定类文件的位置。 - 使用`findClass()`方法加载指定的类,并通过`newInstance()`方法创建实例。 4. **...

    Jboss管理与开发核心技术(第三版)

    在这个例子中,尝试将`java.net.URL`类型的对象转换为`java.lang.String`类型,但由于类型不匹配,会抛出`ClassCastException`异常。 - **不同URLClassLoader装载相同jar文件的情况**:即使两个类的字节码完全相同...

    jvm 加载class文件

    在这个例子中,`java -verbose:class ClassLoaderTest` 命令用于查看类加载的详细信息。当执行这个命令时,会观察到JRE的Java Runtime Environment如何加载`ClassLoaderTest`类,然后加载`TestClassA`类的过程。 ##...

    S08-SnakeYaml反序列化1

    java.net.URLClassLoader [[!!java.net.URL [\"http://wopjpp.dnslog.cn\"]]]]"; Yaml yaml = new Yaml(); ``` 这个例子中,恶意YAML字符串试图创建一个`ScriptEngineManager`,这可能允许远程加载和执行代码。 **6...

    Java虚拟机JVM类加载学习笔记

    对于**类的加载方式**,有本地加载(从本地文件系统加载`.class`文件)和网络加载(例如通过URLClassLoader从网络获取)。此外,不同JVM实现可能在类初始化策略上有所差异,但通常只在首次主动使用时进行初始化。 ...

    在java中利用动态编译实现eval

    ClassLoader classLoader = new URLClassLoader(new URL[]{tempFile.getParentFile().toURI().toURL()}, Thread.currentThread().getContextClassLoader()); Class&lt;?&gt; dynamicClass = classLoader.loadClass("Temp...

    深入理解JVM之类加载机制详解

    类加载器的实现是通过类加载器的子类来实现的,例如UrlClassLoader和JarClassLoader。类的加载和连接是通过类加载器来实现的,包括加载、验证、准备、解析和初始化五个阶段。类的初始化和使用是通过类的实例化和方法...

    CodeEval:Java中一些代码eval问题的一些解决方案

    ClassLoader loader = new URLClassLoader(new URL[]{fileManager.getLocation(StandardLocation.CLASS_OUTPUT).toURI().toURL()}, Thread.currentThread().getContextClassLoader()); Class&lt;?&gt; dynamicClass = ...

    疯狂JAVA讲义

    第1章 Java概述 1 1.1 Java语言的发展简史 2 1.2 Java的竞争对手及各自优势 4 1.2.1 C#简介和优势 4 1.2.2 Ruby简介和优势 4 1.2.3 Python的简介和优势 5 ...学生提问:当我们使用编译C程序时,不仅需要指定存放...

Global site tag (gtag.js) - Google Analytics