直接插入我的代码:
public class ServletProcessor1 {
public void process(Request request, Response response) {
// TODO Auto-generated method stub
String uri = request.getUri();
System.out.println(uri);
String servletName = uri.substring(uri.lastIndexOf("/")+1);
URLClassLoader loader = null;
try{
URL[] urls = new URL[1];
URLStreamHandler streamHandler = null;
File classPath = new File(Constants.WEB_ROOT);
String repository = (new URL("file",null,classPath.getCanonicalPath()+File.separator)).toString();
urls[0] = new URL(null,repository,streamHandler);
loader = new URLClassLoader(urls);
}catch(IOException e){
e.printStackTrace();
}
Class myClass = null;
try{
myClass = loader.loadClass(servletName);
}catch(ClassNotFoundException e){
System.out.println(e.toString());
}
Servlet servlet = null;
try{
servlet = (Servlet)myClass.newInstance();
servlet.service((ServletRequest)request, (ServletResponse)response);
}catch(Exception e){
System.out.println(e.toString());
}
}
}
运行时,总发现 myClass = loader.loadClass(servletName); 报错,
"servletName" 是有WebRoot/WEb-INF/CLASS文件下是有的,
不过在com/servlet_/test/包下面.
请高手赐教,急呀!
分享到:
相关推荐
该类加载器用于从指向 JAR 文件和目录的 URL 的搜索路径加载类和资源。如果不是以该字符结束,则认为该 URL 指向一个将根据需要打开的 JAR 文件pac
使用URLClassLoader加载本地文件夹c盘下的test.jar文件
这样,每次调用代理类中的方法,都会先检查实现类的class文件是否是最新的,如果不是则重新加载,达到动态加载实现类class的目的。 关键字: Java实现热加载; Java动态加载class; Java覆盖已加载的class; Java...
2):网络加载:java.net.URLClassLoader可以加载url指定的类 3):从jar、zip等等压缩文件加载类,自动解析jar文件找到class文件去加载util类 4):从java源代码文件动态编译成为class文件 当一个类被加载、连接、...
Springboot + Hutool-db 使用 URLClassLoader 动态加载外部数据库和数据池 jar包实例
Spring bean 一般通过配置文件和注解进行加载,如果要实现jar或class文件,动态实现spring bean 的动态加载,并通过UrlClassLoader完成jar和class文件的加载。可以实现jar的热替换。spring的bean动态加载则需要对...
NULL 博文链接:https://yklovejava-163-com.iteye.com/blog/1736631
类加载器分为根加载器(bootstrap classloader)、扩展类加载器(ext classloader)、系统类加载器(system classloader)、自定义类加载器(通常继承java.net.URLClassLoader,重写findClass()),它们的关系通常...
执行链实际为:URLClassLoader.class.getConstructor(java.net.URL[].class).newInstance(new
NULL 博文链接:https://shihuan830619.iteye.com/blog/2160884
*1.创建 URLClassLoader 类加载器 * 2.获取当前执行的classpath的所有jar包的路径 * 3.通过java的ToolProvider创建JavaCompile,用来执行class源文件 ...创建DynamicClassLoader来加载类 ,defineClass这个方法
这个一个demo,用来实现加载class文件,如果在实际项目中可以实现,动态修改代码的业务逻辑 首先在安卓中如果我们想实现的动态加载,比如知道安卓的底层运行原理, 首先安卓底层下载的时候使用的是 Classloader,同时...
学生提问:既然内部类是外部类的成员,是否可以为外部类定义子类,在子类中再定义一个内部类来重写其父类中的内部类? 211 6.7.4 局部内部类 211 6.7.5 匿名内部类 212 6.7.6 闭包(Closure)和回调 215 6.8 ...
首先第一个是 jar 文件的制作,Java 里面直接把 .class 文件打包到 .jar 文件里面就可以了,但是 Android 的 Dalvik VM 是不认 Java 的 byte code 的,所以不能直接这么打包,而要用 dx 工具转成 Dalvik byte code ...
ClassLoaderTest 测试自定义的URLClassLoader以加载类 测试如何正确关闭类加载器。 测试如何使用反射关闭JarFile来修复资源泄漏。
加载jar这一部分很容易,可是卸载jar就没那么容易了。加载jar的时候需要用反射去调用URLClassLoader的addURL方法。}%>jars.jar内
进入到AXMLPrinter2.jar所在目录,使用如下命令,得到的main.txt就是反编译后的文件,现在可以看懂了。 java -jar AXMLPrinter2.jar main.xml > main.txt 2、用baksmali-1.3.0.jar反编译xxx.dex文件 解压xxx.apk,...
通过类的包名和雷鸣查找到此类的字节码文件,将xx.class文件中的二进制数据读入到jvm内存,并存入其中的方法区内,然后利用字节码文件创建一个class对象存入到堆之中,用来封装类的数据结构等。 连接(验证、准备、...
最后发现dex2jar.bat不能直接拖到命令行执行,必须cd切换到dex2jar.bat所在目录下执行>dex2jar.bat classes.dex才行,希望对大家有帮助.. -------------------------------------------------------------------------...