项目中,加载指定的类反射调用方法一直报类找不到,经过数百次的测试,对这种问题有了一个重新的认识,特总结、记录、分享如下:
1、路径中尽可能用"/"或者File.separator()而非“\\”,路径中“\”是windows平台的,linux平台中是“/”,java中也是用“/”作为路径的,所以为了跨平台和更规范,建议采用前者
2、在当前的环境中获取绝对路径后,尽可能的replace(“\\”...
分类:
其他好文 时间:
2015-06-09 09:56:26
阅读次数:
122
内容:分别位于\myApp\WEB-INF\classes下的类和\webroot下的类,利用URL数组指定多个仓库位置加载。
MyClassLoader:
public class MyClassLoader {
public static final String WEB_ROOT = System.getProperty("user.dir") +
File.separat...
分类:
Web程序 时间:
2015-05-14 23:53:25
阅读次数:
181
内容:在上一章的基础上多了对servlet的处理,重点是ServletProcessor1这个类,利用到了URL、URLClassLoader和java反射机制。
webroot:
public class HttpServer1 {
private static final String SHUTDOWN_COMMAND = "/SHUTDOWN";
private boolean sh...
分类:
其他好文 时间:
2015-04-25 12:16:33
阅读次数:
135
Java虚拟机利用类加载器将类载入内存,以供使用。在此过程中类加载器要做很多的事情,例如读取字节数组、验证、解析、初始化等。而Java提供的URLClassLoader类能方便地将jar、class或网络资源加载到内存。Tomcat中则用一个工厂类ClassLoaderFactory把创建类加载器的细节进行封装,通过它可以很方便地创建自定义的类加载器。
如上图,利用createClassL...
分类:
其他好文 时间:
2014-12-19 23:30:20
阅读次数:
221
一.概述定义:虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的java类型。类加载和连接的过程都是在运行期间完成的。二. 类的加载方式1):本地编译好的class中直接加载2):网络加载:java.net.URLClassLoader...
分类:
其他好文 时间:
2014-10-22 10:54:06
阅读次数:
269
在Tomcat中为什么创建类加载器后马上就Thread.currentThread().setContextClassLoader(catalinaLoader)?这里主要是为了避免后面加载类时加载失败。下面将举一个典型的例子说明如何利用URLClassLoader加载指定的jar包,并且解析由此引出的加载失败问题。
首先,定义一个提供服务的接口,并且打包成TestInterface.jar。
...
分类:
其他好文 时间:
2014-10-19 01:24:54
阅读次数:
276
一个bug接受到的数据总是说类找不到,
我仔细看了序列化实现了类名相同都相同
然后在服务端接收对象时候总报这个做,网上搜了一大堆最后发现了原来是包名不一样,导致了两个类不一样 了
程序真是个也严密的东西啊
贴代码给大家看看把
java.lang.ClassNotFoundException: xxxxxxxxxxxx
at java.net.URLClassLoader$...
分类:
编程语言 时间:
2014-10-10 15:47:44
阅读次数:
490
Java中一共有四个类加载器,之所以叫类加载器,是程序要用到某个类的时候,要用类加载器载入内存。
这四个类加载器分别为:Bootstrap ClassLoader、Extension
ClassLoader、AppClassLoader和URLClassLoader,他们的作用其实从名字就可以大概推...
分类:
其他好文 时间:
2014-05-21 19:10:38
阅读次数:
230