【问题标题】:What proguard is doing when -dontobfuscate -dontshrink -dontoptimize are used?当使用 -dontobfuscate -dontshrink -dontoptimize 时,proguard 在做什么?
【发布时间】:2015-05-30 11:58:19
【问题描述】:

我有一个使用 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

我本来应该得到原来的罐子,但我得到的罐子更小,所有的类都有不同的大小(通常更小)。

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

【问题讨论】:

  • 你解决过这个问题吗?如果是这样,请您发布您的解决方案。谢谢

标签: jar spring-boot proguard


【解决方案1】:

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

【讨论】:

  • 1) 它并没有解决我的问题,2) 不建议查看他们的文档注释掉生产 -keepattributes SourceFile,LineNumberTable
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
  • 2012-12-05
  • 2019-02-15
  • 1970-01-01
  • 2021-02-05
  • 1970-01-01
相关资源
最近更新 更多