2012-12-28 71 views
4

我使用Proguard 4.8來模糊我的javafx應用程序jar,並且混淆的jar顯示了jar中缺少的一些類。缺少的類是FXML的所有控制器類。 build.xml中的這一步有什麼問題,使用另外兩個實用程序jar來混淆應用程序JAR?模糊JavaFX JAR中的FXML無法找到控制器類

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

回答

4

.fxml文件具有控制器類的確切名稱的字符串。

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

你需要無論是從混淆排除控制器或找出自己的新名字,並更新混淆的JAR文件.fxml