2016-06-23 28 views
0

In meiner Swing-Anwendung habe ich Spring Boot verwendet. Es funktioniert perfekt, bis ich Progard mit Maven Plug-in verwendet habe, um mein Glas zu verschleiern. Jetzt, wenn ich versuche, meine Anwendung "jar" zu starten, wird mein Fehler angezeigt.Spring boot mit proguard nicht in der Lage, ausführbare jar zu erstellen

Ich habe beziehen sich diese Fragen bereits

Spring Boot obfuscator

NullPointerException: ProGuard, Spring Boot

pom.xml

<build> 
     <plugins> 
      <plugin> 
       <groupId>com.github.wvengen</groupId> 
       <artifactId>proguard-maven-plugin</artifactId> 
       <version>2.0.6</version> 
       <dependencies> 
        <dependency> 
         <groupId>net.sf.proguard</groupId> 
         <artifactId>proguard-base</artifactId> 
         <version>4.10</version> 
        </dependency> 
       </dependencies> 
       <executions> 
        <execution> 
         <phase>package</phase> 
         <goals> 
          <goal>proguard</goal> 
         </goals> 
        </execution> 
       </executions> 
       <configuration> 
        <proguardVersion>4.10</proguardVersion> 
        <options> 
         <option>-keep public class com.mycompany.app.Main{public static void main(java.lang.String[]);}</option> 
         <option>-keep public class org.springframework.** { *; }</option> 
        </options> 
        <libs> 
         <lib>${java.home}/lib/rt.jar</lib> 
         <lib>${java.home}/lib/jce.jar</lib> 
        </libs> 
       </configuration> 
      </plugin> 

      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
       <executions> 
        <execution> 
         <goals> 
          <goal>repackage</goal> 
         </goals> 
        </execution> 
       </executions> 
      </plugin> 

     </plugins> 
     <finalName>Application</finalName> 
    </build> 

Fehler in der Konsole

[2016-06-23 18:39:00.110] boot - 240 ERROR [main] --- SpringApplication: Application startup failed 
java.lang.IllegalStateException: Failed to execute CommandLineRunnerat org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:809) 
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:790) 
at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:777) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 
at com.mycompany.app.Main.main(Unknown Source) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NullPointerException 
at com.mycompany.app.Main.run(Unknown Source) 
at org.springframework.boot.SpringApplication.callRunner(SpringApplicati 
on.java:806) 
Exception in thread "main" java.lang.RuntimeException: java.lang.reflect.Invocat 
ionTargetException 
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:62) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.reflect.InvocationTargetException 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces 
sorImpl.java:43) 
at java.lang.reflect.Method.invoke(Method.java:606) 
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:54)... 1 more 
Caused by: java.lang.IllegalStateException: Failed to execute CommandLineRunner 
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:809) 
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:790) 
at org.springframework.boot.SpringApplication.afterRefresh(SpringApplication.java:777) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:308) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1191) 
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1180) 
at com.mycompany.app.Main.main(Unknown Source)  ... 6 more 
Caused by: java.lang.NullPointerException 
at com.mycompany.app.Main.run(Unknown Source) 
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:806) 

Antwort

1

Es sieht aus wie das folgende Verfahren fehlt, wie es durch Reflexion durch die Feder aufgerufen wird:

com.mycompany.app.Main.run(...) 

Sie müssen es explizit halten eine Regel wie folgt aus:

-keep class com.mycompany.app.Main { 
    *** run(...); 
} 

Vielleicht sind danach weitere Regeln einzuhalten.

+0

Erwartet Eröffnung '{' at '(' in Argument Nummer 108 – Harshil

+0

Getestet nur das Snippet und es ist syntaktisch korrekt. Können Sie den Inhalt in Zeile 108 Ihrer Konfiguration? –

+0

habe es, es war ein Fehler von meinem Ende funktioniert gut Vielen Dank Kumpel. – Harshil