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

简介: 将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版本对应的设置参数。

目录
相关文章
|
4月前
|
Java Linux
java基础(3)安装好JDK后使用javac.exe编译java文件、java.exe运行编译好的类
本文介绍了如何在安装JDK后使用`javac.exe`编译Java文件,以及使用`java.exe`运行编译好的类文件。涵盖了JDK的安装、环境变量配置、编写Java程序、使用命令行编译和运行程序的步骤,并提供了解决中文乱码的方法。
91 2
|
2月前
|
安全 Java 开发者
AOP中的JDK动态代理与CGLIB动态代理:深度解析与实战模拟
【11月更文挑战第21天】面向切面编程(AOP,Aspect-Oriented Programming)是一种编程范式,它通过将横切关注点(cross-cutting concerns)与业务逻辑分离,以提高代码的可维护性和可重用性。在Java开发中,AOP的实现离不开动态代理技术,其中JDK动态代理和CGLIB动态代理是两种常用的方式。本文将从背景、历史、功能点、业务场景、底层逻辑等多个维度,深度解析这两种代理方式的区别,并通过Java示例进行模拟和比较。
74 4
|
3月前
|
Java Spring 数据库连接
[Java]代理模式
本文介绍了代理模式及其分类,包括静态代理和动态代理。静态代理分为面向接口和面向继承两种形式,分别通过手动创建代理类实现;动态代理则利用反射技术,在运行时动态创建代理对象,分为JDK动态代理和Cglib动态代理。文中通过具体代码示例详细讲解了各种代理模式的实现方式和应用场景。
44 0
[Java]代理模式
|
3月前
|
Java
【编程进阶知识】静态代理、JDK动态代理及Cglib动态代理各自存在的缺点及代码示例
本文介绍了三种Java代理模式:静态代理、JDK动态代理和Cglib动态代理。静态代理针对特定接口或对象,需手动编码实现;JDK动态代理通过反射机制实现,适用于所有接口;Cglib动态代理则基于字节码技术,无需接口支持,但需引入外部库。每种方法各有优缺点,选择时应根据具体需求考虑。
28 1
|
4月前
|
Java API 开发者
【Java字节码操控新篇章】JDK 22类文件API预览:解锁Java底层的无限可能!
【9月更文挑战第6天】JDK 22的类文件API为Java开发者们打开了一扇通往Java底层世界的大门。通过这个API,我们可以更加深入地理解Java程序的工作原理,实现更加灵活和强大的功能。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来!
|
4月前
|
Java API 开发者
【Java字节码的掌控者】JDK 22类文件API:解锁Java深层次的奥秘,赋能开发者无限可能!
【9月更文挑战第8天】JDK 22类文件API的引入,为Java开发者们打开了一扇通往Java字节码操控新世界的大门。通过这个API,我们可以更加深入地理解Java程序的底层行为,实现更加高效、可靠和创新的Java应用。虽然目前它还处于预览版阶段,但我们已经可以预见其在未来Java开发中的重要地位。让我们共同期待Java字节码操控新篇章的到来,并积极探索类文件API带来的无限可能!
|
4月前
|
Java
安装JDK18没有JRE环境的解决办法
安装JDK18没有JRE环境的解决办法
396 3
|
10天前
|
NoSQL 关系型数据库 MySQL
Linux安装jdk、mysql、redis
Linux安装jdk、mysql、redis
101 7
|
5月前
|
Oracle Java 关系型数据库
Mac安装JDK1.8
Mac安装JDK1.8
798 4
|
5月前
|
Java 关系型数据库 MySQL
"解锁Java Web传奇之旅:从JDK1.8到Tomcat,再到MariaDB,一场跨越数据库的冒险安装盛宴,挑战你的技术极限!"
【8月更文挑战第19天】在Linux上搭建Java Web应用环境,需安装JDK 1.8、Tomcat及MariaDB。本指南详述了使用apt-get安装OpenJDK 1.8的方法,并验证其版本。接着下载与解压Tomcat至`/usr/local/`目录,并启动服务。最后,通过apt-get安装MariaDB,设置基本安全配置。完成这些步骤后,即可验证各组件的状态,为部署Java Web应用打下基础。
66 1