|
@@ -98,7 +98,7 @@
|
|
|
|
|
|
|
|
> <font face="幼圆" color = "#F53B45">**提示:**</font>慎用`cca(尤其)`、`cma`、`cfa`参数,如果要用,请做好充分测试。
|
|
> <font face="幼圆" color = "#F53B45">**提示:**</font>慎用`cca(尤其)`、`cma`、`cfa`参数,如果要用,请做好充分测试。
|
|
|
>
|
|
>
|
|
|
-> 原因说明:部分框架在获取某些元数据时,并不全都从已被premain处理后的类中读取,而是直接去对应位置读取资源文件本身(如:spring的`SimpleMetadataReader implements MetadataReader`直接去读取.class文件本身,以知道是否需要将类注册进容器等),因为class-winter会对该位置的资源进行加密(如:使用cca、cma、cfa时会擦除类、方法、字段上的注解信息),因此此时如果直接去.class文件本身获取元信息的话,可能会丢失部分信息(如:被class-winter擦除了类的注解信息就读取不到)
|
|
|
|
|
|
|
+> 原因说明:部分框架在获取某些元数据时,并不全都从已被premain处理后的类中读取,而是直接去对应位置读取资源文件本身(如:spring的`SimpleMetadataReader implements MetadataReader`直接去读取.class文件本身,以知道是否需要将类注册进容器等),因为class-winter会对该位置的资源进行加密(如:使用cca、cma、cfa时会擦除类、方法、字段上的注解信息),因此此时如果直接去.class文件本身获取元信息的话,可能会丢失部分信息(如:被class-winter擦除了的类的注解信息就读取不到)
|
|
|
>
|
|
>
|
|
|
> 解决办法:可以考虑对相关逻辑进行定制,使其不从已加密的.class中获取相关信息(如:spring框架可考虑定制MetadataReader)
|
|
> 解决办法:可以考虑对相关逻辑进行定制,使其不从已加密的.class中获取相关信息(如:spring框架可考虑定制MetadataReader)
|
|
|
|
|
|