当使用-dontobfuscate -dontshrink -dontoptimize时,proguard正在做什么?

时间:2015-03-26 12:54:06

标签: jar spring-boot proguard

我有一个使用spring boot的项目,在构建时会生成一个包含所有依赖项jar的jar。

我想混淆这个jar,但是当我试图运行jar时我得到了混淆:

java.lang.IllegalStateException: Unable to open nested entry 'lib/h2-1.4.185.jar'. It has been compressed and nested jar files must be stored without compression. Please check the mechanism used to create your executable jar file
    at org.springframework.boot.loader.jar.JarFile.createJarFileFromFileEntry(JarFile.java:378)
    at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(JarFile.java:355)
    at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:341)
    at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:108)
    at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(JarFileArchive.java:92)
    at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(ExecutableArchiveLauncher.java:74)
    at org.springframework.boot.loader.Launcher.launch(Launcher.java:60)
    at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:45)

我试图找出问题所在,为此我只创建了一个配置文件:

-injars MyJar-orig.jar
-outjars MyJar.jar

-libraryjars <java.home>/lib/jce.jar
-libraryjars <java.home>/lib/rt.jar(java/**,javax/**)
-libraryjars '..\..\resources\proguard5.0\references\log4j-1.2.17.jar'

-dontobfuscate
-dontshrink
-dontoptimize

我应该得到原来的jar,但是我得到的是一个更小的jar,所有的类都有不同的大小(一般都比较小)。

在这种情况下,proguard在做什么? 知道如何解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

请查看'-keepattributes'参数。使用Proguard GUI时,在“混淆”选项卡下有一个选项。单击此按钮解决了我的问题,与您的问题类似/相同。