【问题标题】:FXML in obfuscated JavaFX JAR can't find Controller class混淆的 JavaFX JAR 中的 FXML 找不到控制器类
【发布时间】:2013-03-12 00:07:13
【问题描述】:

我正在使用 Proguard 4.8 对我的 javafx 应用程序 jar 进行模糊处理,并且混淆后的 jar 显示 jar 中缺少一些类。缺少的类是 FXML 的所有控制器类。 build.xml 中的这一步有什么问题,即用另外两个实用程序 jar 混淆应用程序 JAR?

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

【问题讨论】:

    标签: deployment ant javafx-2 obfuscation fxml


    【解决方案1】:

    .fxml 文件的字符串具有控制器类的确切名称。

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

    您需要从混淆中排除控制器,或者找出它们的新名称并更新混淆 jar 中的 .fxml 文件。

    【讨论】:

      猜你喜欢
      • 2013-03-04
      • 2013-12-25
      • 2012-12-15
      • 2015-05-29
      • 2017-03-11
      • 1970-01-01
      • 2013-07-22
      • 2012-09-14
      相关资源
      最近更新 更多