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

来源:3-3 动态代理实现添加 InvocationHandler

嘉禾种嘉禾

2018-04-24 23:34

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

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

写回答 关注

2回答

  • 慕粉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;

    嘉禾种嘉禾

    第一行代码是跟着老师敲的,第二行代码是查看过我的Tomcat执行后会在target中输出所有的类之后改动的,将$Proxy.java编译后生成的$Proxy.class文件也在这个里面就处理了该问题;

    2018-04-25 10:49:44

    共 1 条回复 >

模式的秘密---代理模式

本节课程将带你领略Java编程语言中代理模式的奥妙

54914 学习 · 98 问题

查看课程

相似问题