2015-04-21 5 views
11

Stiamo sviluppando i nostri jar plugin Eclipse utilizzati dalla nostra applicazione basata su Eclipse. Attualmente stiamo usando la versione 2.0.8 proguard-maven-plugin per offuscarli. Tuttavia, quando si esegue mvn install su alcuni plugin, stiamo incontrando il seguente errore:Durante l'esecuzione di proguard-maven-plugin, "CreateProcess error = 206, Il nome file o l'estensione è troppo lungo" si verifica

[INFO] --------------------------------------------------------------------- 
[INFO] BUILD FAILURE 
[INFO] --------------------------------------------------------------------- 
[INFO] Total time: 1:34.297s 
[INFO] Finished at: Tue Apr 21 16:03:51 SGT 2015 
[INFO] Final Memory: 88M/210M 
[INFO] --------------------------------------------------------------------- 
[ERROR] Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.8:proguard (default) on project com.x.y: Execution default of goal com.github.wvengen:proguard-maven-plugin:2.0.8:proguard failed: java.io.IOException: Cannot run program "C:\Program Files (x86)\Java\jdk1.7.0_55\jre\bin\java.exe": CreateProcess error=206, The filename or extension is too long -> [Help 1] 

qualcuno ha mai incontrato questo? Se sì, come hai risolto il problema?

Nota che ho effettivamente visto this question e altre questioni correlate, prima di decidere di chiedere ma la risposta da Brad Mace non è applicabile al mio caso, come l ' "errore CreateProcess = 206, Il nome del file o l'estensione è troppo lungo" è generato da Proguard e non di Javadoc. Inizialmente, penso (correggimi se sbaglio) che 1 delle 7 opzioni fornite da espinchi o una variazione di esse potrebbe funzionare ma non sono sicuro di quale. Giusto per farvi sapere i miei vincoli nel determinare la soluzione:

  1. Non sono sicuro se tutti i percorsi di classe in questo particolare plug-in sono validi dal momento che questo è stato sviluppato da qualcun altro molti, molti anni fa, in modo Non penso di poter ancora contattare lo sviluppatore. Questo rende esitante per ridurre i percorsi di classe per timore che possa effettivamente causare più danni che benefici.
  2. Non riesco a utilizzare l'opzione "usa IntelliJ" poiché questo problema si è verificato nella riga di comando di Windows durante l'installazione di mvn e non nell'IDE di Eclipse.
  3. Penso che le altre opzioni siano troppo noiose per me. Spero ci sia una soluzione più semplice.

Per riferimento, qui di seguito è il frammento di Proguard legate dal mio file pom:

<build> 
    <plugins> 
     <plugin> 
      <groupId>com.github.wvengen</groupId> 
      <artifactId>proguard-maven-plugin</artifactId> 
      <executions> 
       <execution> 
        <phase>package</phase> 
        <goals> 
         <goal>proguard</goal> 
        </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <maxMemory>1024m</maxMemory> 
       <proguardInclude>${basedir}/proguard.conf</proguardInclude> 
       <libs> 
        <lib>${java.home}/lib/rt.jar</lib> 
       </libs> 
       <exclusions> 
        <exclusion> 
         <groupId>com.company.package</groupId> 
        </exclusion> 
       </exclusions> 
      </configuration> 
     </plugin> 
    </plugins> 
</build> 
+1

possibile duplicato [errore CreateProcess = 206, del file o estensione troppo lunga durante l'esecuzione metodo main()] (http://stackoverflow.com/questions/10519558/createprocess-error-206-the-filename-or-extension-is-too-long-when-running-main) – gpapaz

+0

in realtà, ho visto quel post prima di pubblicare la mia domanda. la risposta 'puoi aggiungere useexternalfile = "yes"' di Brad Mace non è applicabile al mio caso. Sto pensando che almeno 1 delle 7 opzioni presentate da espinchi può risolvere il mio problema, ma non sono sicuro di quale sia. – bookhuntress

+2

Quindi, aggiorna la tua domanda per ottenere aiuto per determinare quale delle 7 opzioni funzionerà per il tuo caso, o vai a quella domanda e chiedi sui commenti? Così com'è, stai facendo la stessa domanda di quelli presentati come duplicati. – gpapaz

risposta

0

In qualche modo, per il nostro caso, la ss. passaggi eliminato l'errore:

  1. Confronta le dipendenze nel pom.xml del componente e le dipendenze identificate da Proguard-maven-plugin. Nel nostro caso, abbiamo notato che proguard-maven-plugin ha identificato alcune dipendenze che non sono realmente necessarie per il componente. In effetti, queste dipendenze non sono nemmeno specificate nel pom.xml del componente.

  2. Dopo aver eseguito passaggio 1, modificare pom.xml del componente in modo che questo escludere le dipendenze inutili che Proguard ha identificato (cioè, utilizzare il parametro exclusion). Qui di seguito è un frammento di esempio:

<build> 
    <plugins> 
     <plugin> 
      <groupId>com.github.wvengen</groupId> 
      <artifactId>proguard-maven-plugin</artifactId> 
      <version>2.0.10</version> 
      <executions> 
       <execution> 
        <phase>package</phase> 
         <goals> 
          <goal>proguard</goal> 
         </goals> 
       </execution> 
      </executions> 
      <configuration> 
       <maxMemory>1024m</maxMemory> 
       <proguardInclude>${basedir}/proguard.conf</proguardInclude> 
       <libs> 
        <lib>${java.home}/lib/rt.jar</lib> 
        <lib>${java.home}/lib/jce.jar</lib> 
       </libs> 
       <!-- For some reason, these components are included by the plugin even if they are not dependencies of SES components so we need to explicitly indicate to proguard-maven-plugin to exclude them. --> 
       <exclusions> 
        <exclusion> 
         <groupId>p2.eclipse-plugin</groupId> 
         <artifactId>org.apache.geronimo.specs.geronimo-jms_1.1_spec</artifactId> 
        </exclusion> 
        <!-- other exclusions here --> 
       </exclusions> 
      </configuration> 
      <dependencies> 
       <dependency> 
        <groupId>net.sf.proguard</groupId> 
        <artifactId>proguard-base</artifactId> 
        <version>5.2</version> 
        <scope>runtime</scope> 
       </dependency> 
      </dependencies> 
     </plugin> 
    </plugins> 
</build>