Proguard4.8を使用してJava7でプロジェクトを難読化しようとしています。
これが私のMavenプラグイン構成です:
<plugin>
<groupId>com.pyx4me</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<proguardVersion>4.8</proguardVersion>
<obfuscate>true</obfuscate>
<options>
<option>-ignorewarnings</option>
<option>-dontshrink</option>
<option>-dontoptimize</option>
<option>-allowaccessmodification</option>
<option>-keep class !ua.com.sintez.exceptions.** { *; }</option>
</options>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-proguard.jar</outjar>
<outputDirectory>${project.build.directory}</outputDirectory>
<libs>
<lib>${java.home}/lib/rt.jar</lib>
<lib>${java.home}/lib/jsse.jar</lib>
</libs>
<addMavenDescriptor>false</addMavenDescriptor>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard</artifactId>
<version>4.8</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
「ua.com.mycompany.exceptions」というパッケージを1つだけ難読化して、まったく機能するかどうかを確認しました。そのパッケージには、JPAに関するものは何も含まれていません。persistence.xmlがその場所にあり、すべてのエンティティがそこに存在します。しかし、プログラムを起動すると、次のエラーが発生します。
The collection of metamodel types is empty. Model classes may not have been found during entity search for Java SE and some Java EE container managed persistence units.<br/>
java.lang.IllegalArgumentException: Unknown entity bean class: class ua.com.mycompany.entity.Currency, please verify that this class has been marked with the @Entity annotation.<br/>
java.lang.IllegalArgumentException: An exception occurred while creating a query in EntityManager: Exception Description: Problem compiling [select count(p) from Product as p].
The abstract schema type 'Product' is unknown.
だから私は次の質問があります:
- そのエラーの原因は何でしょうか?
- プロガードの設定は間違っていますか?
- 私はまた、これの膨大な数を取得しています:
Note: duplicate definition of library class ...
そしてこのような多数の警告:Warning:net.sf.jasperreports.compilers.JavaScriptEvaluator: can't find referenced class org.mozilla.javascript.Context
。
大丈夫ですか、もしそうなら、どうすればそれを抑えることができますか?