gpt4 book ai didi

java - NullPointerException : ProGuard, Spring 启动

转载 作者:行者123 更新时间:2023-11-30 07:38:18 30 4
gpt4 key购买 nike

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

我正在努力使用 Proguard (proguard + proguard-maven-plugin) 混淆 [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>

最佳答案

鉴于提到的堆栈跟踪并查看 source code对于 2.0.11 版本的插件,在 ProGuardMojo 类的此 block 中抛出 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>

因此,很可能这些 Maven 属性之一未设置,作为空/null 传递并导致错误。

您应该检查这些属性是否具有有效值,或者应该从命令行传递,但事实并非如此。

关于java - NullPointerException : ProGuard, Spring 启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35065609/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com