Java NullPointerException:ProGuard,Spring Boot
我遇到空指针异常,不知道如何克服这个问题并混淆代码。你有什么想法吗 我正在用Proguard(Proguard+Proguard Maven插件)混淆[Maven]Spring Boot项目的一些库 堆栈跟踪:Java NullPointerException:ProGuard,Spring Boot,java,spring,maven,spring-boot,proguard,Java,Spring,Maven,Spring Boot,Proguard,我遇到空指针异常,不知道如何克服这个问题并混淆代码。你有什么想法吗 我正在用Proguard(Proguard+Proguard Maven插件)混淆[Maven]Spring Boot项目的一些库 堆栈跟踪: org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.11:proguard (proguar
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.11:proguard (proguard) on project XXX: Execution proguard of goal com.github.wvengen:proguard-maven-plugin:2.0.11:proguard failed.
(...)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution proguard of goal com.github.wvengen:proguard-maven-plugin:2.0.11:proguard failed.
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:110)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
... 19 more
Caused by: java.lang.NullPointerException
at com.github.wvengen.maven.proguard.ProGuardMojo.execute(ProGuardMojo.java:506)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101)
... 20 more
POM构建插件:
<plugin>
<groupId>com.github.wvengen</groupId>
<artifactId>proguard-maven-plugin</artifactId>
<version>2.0.11</version>
<executions>
<execution>
<id>proguard</id>
<phase>package</phase>
<goals>
<goal>proguard</goal>
</goals>
</execution>
</executions>
<configuration>
<obfuscate>true</obfuscate>
<injar>${project.build.finalName}.jar</injar>
<outjar>${project.build.finalName}-small.jar</outjar>
<outputDirectory>${project.build.directory}/proguard</outputDirectory>
<proguardInclude>${basedir}/proguard.conf</proguardInclude>
<libs>
<lib>${java.bootstrap.classes}</lib>
<lib>${java.cryptographic.extension.classes}</lib>
<lib>${java.secure.socket.extension.classes}</lib>
</libs>
<injarNotExistsSkip>true</injarNotExistsSkip>
<options>
</options>
</configuration>
<dependencies>
<dependency>
<groupId>net.sf.proguard</groupId>
<artifactId>proguard-base</artifactId>
<version>5.2.1</version>
<scope>runtime</scope>
</dependency>
</dependencies>
</plugin>
com.github.wvengen
proguard maven插件
2.0.11
前卫
包裹
前卫
真的
${project.build.finalName}.jar
${project.build.finalName}-small.jar
${project.build.directory}/proguard
${basedir}/proguard.conf
${java.bootstrap.classes}
${java.cryptographic.extension.classes}
${java.secure.socket.extension.classes}
真的
net.sf.proguard
前卫基地
5.2.1
运行时
给定所提到的stacktrace,并查看插件的2.0.11版本,在ProGuardMojo
类的此块中抛出NullPointerException:
502 if (libs != null) {
503 for (Iterator i = libs.iterator(); i.hasNext();) {
504 Object lib = i.next();
505 args.add("-libraryjars");
506 args.add(fileNameToString(lib.toString()));
507 }
508 }
这意味着lib.toString()
很可能是对null
引用的方法调用
从您提到的插件配置中,我们可以看到:
<libs>
<lib>${java.bootstrap.classes}</lib>
<lib>${java.cryptographic.extension.classes}</lib>
<lib>${java.secure.socket.extension.classes}</lib>
</libs>
${java.bootstrap.classes}
${java.cryptographic.extension.classes}
${java.secure.socket.extension.classes}
因此,这些Maven属性中很可能有一个未设置,作为空/null传递,并导致错误
您应该检查这些属性是否具有有效值,或者是否应该从命令行传递,但事实并非如此。可能重复@Teepeemm,这可能不是该(著名)问题的重复,因为它不是用户通过插件提供的代码,NPE来自maven插件most的错误配置probably@Marco您可以发布更新的解决方案吗?谢谢你,汉克斯,你说的Maven属性没有设置是对的