我有一个使用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在做什么? 知道如何解决我的问题吗?
答案 0 :(得分:0)
请查看'-keepattributes'参数。使用Proguard GUI时,在“混淆”选项卡下有一个选项。单击此按钮解决了我的问题,与您的问题类似/相同。