2012-12-28 5 views
4

Je suis obscurcir mon javafx application jar en utilisant Proguard 4.8 et jar obfuscated montre quelques classes manquantes dans le pot. Les classes manquantes sont toutes les classes de contrôleur de FXML. Quel est le problème avec cette étape dans build.xml qui obscurcit l'application JAR avec deux utilitaires supplémentaires jar?FXML dans JavaFX JAR Obfuscated ne peut pas trouver la classe de contrôleur

<target name="Ofuscating" depends="CreatingJars" > 
    <taskdef resource="proguard/ant/task.properties" classpath="${WorkingFolder}/proguard.jar" /> 
    <proguard> 
     -dontusemixedcaseclassnames 
     -printmapping proguard.map 
     -dontshrink 
     -dontoptimize 
     -dontskipnonpubliclibraryclasses 
     -dontskipnonpubliclibraryclassmembers 
     <!--flattenpackagehierarchy ''--> 
     -libraryjars "${java.home}/lib/rt.jar" 
     -libraryjars "${java.home}/lib/javaws.jar" 
     -libraryjars "${env.JAVA_HOME}/lib/ant-javafx.jar" 
     -libraryjars "${env.JREFX_HOME}/lib/jfxrt.jar"   
     -libraryjars ${WorkingFolder}/libs/BareBonesBrowserLaunch.jar 
     : 
     : 
     -libraryjars ${WorkingFolder}/CustomJars/Lib.jar 
     -injars ${WorkingFolder}/${app.name}.jar 
     -injars ${WorkingFolder}/CustomJars/Verifier.jar(!META-INF/MANIFEST.MF) 
     -injars ${WorkingFolder}/CustomJars/Utility.jar(!META-INF/MANIFEST.MF) 
     -outjars ${WorkingFolder}/Obfuscated.jar 
     -ignorewarnings 
     -keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod 
     -adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF,images/*.jar,publicCerts.store,production.version 
     -keepclassmembernames class * { 
      @javafx.fxml.FXML *; 
     } 
     -keepclasseswithmembers public class com.javafx.main.Main, com.product.main.EntryFX, net.license.LicenseEntryPoint { 
      public *; public static *; 
     } 
     -keep class * extends org.xml.sax.helpers.DefaultHandler 
     -keepclassmembers class * extends org.xml.sax.helpers.DefaultHandler { 
      private *; 
       public *; 
     } 
    </proguard> 
</target> 

Répondre

4

.fxml fichiers ont des chaînes avec des noms exacts de la classe du contrôleur.

<Scene width="550" height="550" 
    fx:controller="fxmltableview.FXMLTableViewController" 
    xmlns:fx="http://javafx.com/fxml"> 

Vous devez soit exclure les contrôleurs de obscurcissant ou de connaître leurs nouveaux noms et mettre à jour les fichiers dans .fxml pot obfuscation.

Questions connexes