Proguard 导致 org.hibernate.AnnotationException
Proguard causes org.hibernate.AnnotationException
这是我第一次使用混淆器 (ProGuard) 来混淆我的代码。我有两个 J2EE 项目 EJB 和 webProject。目前我只混淆了我的 EJB.jar 项目,它也托管网络服务,但在我到达那部分之前我收到一个错误
我使用 ProGuard GUI 应用程序成功生成了输出 jar,但是当我在我的服务器 (wildfly) 上部署该 jar 时,它给了我这个异常:
org.hibernate.AnnotationException: No identifier specified for entity: com.metadatatool.b.a
此b.a
为混淆码原名不同
这个异常基本上是在一个实体上调用的,即一个视图,它有一个 @Id
标识符,如果我不混淆我的代码,它会正常工作,但当我这样做时,它会给我这个错误。
我正在使用 ProGuard 的 -keep attributes
功能,但我仍然收到此错误
EJB 使用反射,并要求某些类 在经过混淆时保留其原始名称、方法和注释。要解决您的问题,您需要添加一些规则,例如:
-keepattributes RuntimeVisibleAnnotations
-keep @javax.persistence.* class * {
*;
}
使 ProGuard 不去除注释并且不触摸使用 @Id
注释的 类。
这是我第一次使用混淆器 (ProGuard) 来混淆我的代码。我有两个 J2EE 项目 EJB 和 webProject。目前我只混淆了我的 EJB.jar 项目,它也托管网络服务,但在我到达那部分之前我收到一个错误
我使用 ProGuard GUI 应用程序成功生成了输出 jar,但是当我在我的服务器 (wildfly) 上部署该 jar 时,它给了我这个异常:
org.hibernate.AnnotationException: No identifier specified for entity: com.metadatatool.b.a
此b.a
为混淆码原名不同
这个异常基本上是在一个实体上调用的,即一个视图,它有一个 @Id
标识符,如果我不混淆我的代码,它会正常工作,但当我这样做时,它会给我这个错误。
我正在使用 ProGuard 的 -keep attributes
功能,但我仍然收到此错误
EJB 使用反射,并要求某些类 在经过混淆时保留其原始名称、方法和注释。要解决您的问题,您需要添加一些规则,例如:
-keepattributes RuntimeVisibleAnnotations
-keep @javax.persistence.* class * {
*;
}
使 ProGuard 不去除注释并且不触摸使用 @Id
注释的 类。