将JDK动态代理生成的类保存为 .class文件System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
无效,没有看到相应的字节码文件,这是因为System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
为jdk8版本及之前的设置。
1.jdk8及之前的设置:
- 在程序中使用了System.setProperty对变量进行设置
System.setProperty("sun.misc.ProxyGenerator.saveGeneratedFiles", "true");
或者在运行时加入jvm 参数 -Dsun.misc.ProxyGenerator.saveGeneratedFiles=true
ps:如果配置了-Dproperty=value参数,又在程序中使用了System.setProperty对同一个变量进行设置,那么以程序中的设置为准。
2.jdk8之后的设置:
在程序中使用了System.setProperty对变量进行设置
System.setProperty("jdk.proxy.ProxyGenerator.saveGeneratedFiles", "true");
或者
System.getProperties().put("jdk.proxy.ProxyGenerator.saveGeneratedFiles", "true");
或者在运行时加入jvm 参数 -Djdk.proxy.ProxyGenerator.saveGeneratedFiles=true
运行效果:
可以看到自动生成了com.sun.proxy包路径并在其包路径下创建了动态代理生成的.class文件
3.如何知道是jdk.proxy.ProxyGenerator.saveGeneratedFiles
3.如何知道是jdk.proxy.ProxyGenerator.saveGeneratedFiles
如果不确定,查看ProxyGenerator类内容,如下:
红圈中的内容即是自己当前jdk版本对应的设置参数。