Java NullPointerException:ProGuard,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

我遇到空指针异常,不知道如何克服这个问题并混淆代码。你有什么想法吗

我正在用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 (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属性没有设置是对的