问答详情
源自:3-3 动态代理实现添加 InvocationHandler

为啥我load到内存到时候会报找不到class文件

// load到内存中		
ClassLoader cl = ClassLoader.getSystemClassLoader();		
Class c = cl.loadClass("com.design.proxy.$Proxy0");

换成其他的class文件就没问题

提问者:嘉禾种嘉禾 2018-04-24 23:34

个回答

  • 慕粉3779733
    2018-04-25 22:00:12

    建议你发一下你写的代码,看看是不是哪地方写错了,$Proxy后你是不是少了个0?

  • 嘉禾种嘉禾
    2018-04-25 10:41:33

    问题已解决:

    1、在生成java文件的时候,java文件路径不正确;

    我写的是:

    String filename = System.getProperty("user.dir")+"/com/design/proxy/$Proxy0.java";

    但是我的编译器正式输出路径为:

    String filename = System.getProperty("user.dir")+"/target/classes/com/design/proxy/$Proxy0.java";

    总结:

    需要确认Tomcat启动时查找class的路径是否和上面java文件的路径一致,因为编译java文件的class文件也会在此处,所以编译后的class不在Tomcat查找的位置则会报ClassNotFoundException;