【发布时间】: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