2016-01-28 2 views
1

Я получаю исключение из null указателя и не имею никаких идей о том, как преодолеть эту проблему и запутать код. У тебя есть идеи?NullPointerException: ProGuard, Spring Boot

Я работаю, чтобы запутать некоторые библиотеки проекта [Maven] Весна-загрузки с Proguard (ProGuard + ProGuard-Maven-плагин)

Стек след:

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> 
+3

Возможный дубликат [Что такое Исключение Null Указатель и как его исправить?] (Http://stackoverflow.com/questions/218384/what-is-a-null-pointer-exception-and-how -do-i-fix-it) – Teepeemm

+0

@Teepeemm это, вероятно, не дубликат этого (известного) вопроса, поскольку он не является кодом, предоставленным пользователем плагином, NPE исходит из неправильной конфигурации плагина maven вероятно –

+0

@Marco Можете ли вы опубликовать свое обновленное решение? Спасибо – ALM

ответ

1

Учитывая упомянутое StackTrace и глядя на на source code плагина для версии 2.0.11 , то NullPointerException брошен в этом блоке ProGuardMojo класса:

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 не установлено, передается как пустой/нуль и вызывает ошибку.

Вы должны проверить, имеют ли эти свойства допустимое значение или должны были быть переданы из командной строки, и это не так.

+0

Спасибо, вы правы в отношении свойств Maven, которые не установлены – Marco

Смежные вопросы