将JDK动态代理生成的类保存为 .class文件System.setProperty(“sun.misc.ProxyGenerator.saveGeneratedFiles“, “true“)无效

将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

如果不确定,查看ProxyGenerator类内容,如下:
在这里插入图片描述红圈中的内容即是自己当前jdk版本对应的设置参数。

猜你喜欢

转载自blog.csdn.net/MrYushiwen/article/details/111473126