2017-02-03 6 views
0

내 코드의 난독 화를 위해 obfuscator (ProGuard)를 처음 사용했습니다. 두 개의 J2EE 프로젝트 EJB 및 webProject가 있습니다. 현재 EJB.jar 프로젝트 만 난독 화 중이며 webservices도 호스팅하고 있지만 그 부분에 도달하기 전에 오류가 발생합니다.Proguard가 org.hibernate.AnnotationException을 야기 함

ProGuard GUI 응용 프로그램을 사용하여 출력 jar를 성공적으로 생성했습니다.

org.hibernate.AnnotationException: No identifier specified for entity: com.metadatatool.b.a 

b.a는 난독 화 코드 원래 이름이 달랐다입니다 : 서버 (제이보스)는 나에게이 예외를했다.

이 예외는 기본적으로 뷰 즉 엔티티에서 호출되며 코드가 난독 화되지 않으면 정상적으로 작동하지만 나에게이 오류가 발생하면 @Id 식별자가 있습니다. ProGuard의 -keep attributes 기능을 사용하고 있지만 여전히이 오류가 발생합니다.

답변

0

EJB는 리플렉션을 사용하고 일부 클래스는 난독 화를 통과 할 때 원래 이름, 메소드 및 주석을 유지해야합니다.

-keepattributes RuntimeVisibleAnnotations 
-keep @javax.persistence.* class * { 
    *; 
} 

는 주석을 제거하지와 @Id 주석 클래스를 만지지 ProGuard에서을 만드는 : 문제를 해결하려면, 당신은 같은 규칙의 몇 가지를 추가해야합니다.