core-lib / xjar

Spring Boot JAR 安全加密运行工具,支持的原生JAR。
Apache License 2.0
1.63k stars 458 forks source link

按照readme对我的jar包进行加密,发现加密后在反编译还是能看到源码,运行时还会报错 #60

Open changjiang-lee opened 4 years ago

changjiang-lee commented 4 years ago

按照官方教程,一步步进行了加密。 结果成功后在反编译加密后的jar,还是能看到源码,不知道什么原因? 试着用xjar java -jar ***-encrypted.jar 运行后报错,为什么我这里会出现这种问题?是我的环境有问题吗?

Exception in thread "main" java.lang.reflect.InvocationTargetException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at io.xjar.jar.XJarLauncher.launch(XJarLauncher.java:66) at io.xjar.jar.XJarLauncher.main(XJarLauncher.java:31) Caused by: java.lang.IllegalStateException: Failed to get nested archive for entry BOOT-INF/lib/spring-boot-starter-websocket-2.1.1.RELEASE.jar at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:108) at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(JarFileArchive.java:86) at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(ExecutableArchiveLauncher.java:70) at org.springframework.boot.loader.Launcher.launch(Launcher.java:49) at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51) ... 6 more Caused by: java.io.IOException: Unable to open nested jar file 'BOOT-INF/lib/spring-boot-starter-websocket-2.1.1.RELEASE.jar' at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:256) at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:241) at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchive(JarFileArchive.java:103) ... 10 more Caused by: java.lang.IllegalStateException: Unable to open nested entry 'BOOT-INF/lib/spring-boot-starter-websocket-2.1.1.RELEASE.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:284) at org.springframework.boot.loader.jar.JarFile.createJarFileFromEntry(JarFile.java:264) at org.springframework.boot.loader.jar.JarFile.getNestedJarFile(JarFile.java:252) ... 12 more panic: exit status 1 goroutine 1 [running]: main.main()

cyw3 commented 3 years ago

也遇到这个InvocationTargetException问题,这里我用到了反射

hxy91819 commented 3 years ago

默认情况下,即没有提供过滤器的时候,对于Spring Boot JAR包只加密本项目即 BOOT-INF/classes/ 下的资源, 而对于普通JAR则除了META-INF/MANIFEST.MF 之外的所有资源。

源码没有被加密可能是这个原因。报错我没遇到。

changjiang-lee commented 3 years ago

应该就是因为springboot的jar包内部包含了第三方依赖jar包,才引起的错误