ProGuard 5.3.2版是否支持JavaFx?

时间:2017-02-18 01:24:06

标签: java swing javafx proguard

我认为它应该支持Java 8的JavaFx,但是当我运行它时,我得到了以下内容:

ProGuard, version 5.3.2
Reading input...
Reading program jar [C:\Dir_myApp\dist\App.jar]
Reading library jar [C:\Program Files\Java\jre1.8.0_111\lib\rt.jar]
Reading library jar [C:\Program Files\Java\jre1.8.0_111\lib\jce.jar]
Reading library jar [C:\Program Files\Java\jre1.8.0_111\lib\jfxswt.jar]
Reading library jar [C:\Program Files\Java\jre1.8.0_111\lib\jfr.jar]
Initializing...
Warning: App: can't find referenced class javafx.embed.swing.JFXPanel
Warning: App: can't find referenced class javafx.scene.media.Media

我收录了jfxswt.jar& jfr.jar因为它们看起来像JavaFx jar文件,我需要做些什么才能使它与[javafx.embed.swing.JFXPanel]和[javafx.embed.swing.Media]一起使用?

2 个答案:

答案 0 :(得分:2)

我找到了答案,我不需要2个jar文件:jfxswt.jar& jfr.jar。

但我确实需要包含:/lib/ext/jfxrt.jar才能使其正常工作。

答案 1 :(得分:1)

可以使用ProGuard和JavaFX,您可能需要查看来自javaf-maven-plugin的示例项目:

https://github.com/javafx-maven-plugin/javafx-maven-plugin/tree/master/src/it/08-build-with-proguard

使用以下配置:

-dontoptimize

# Save meta-data for stack traces
-renamesourcefileattribute SourceFile
-keepattributes SourceFile,LineNumberTable

# Rename FXML files together with related views
-adaptresourcefilenames **.fxml,**.png,**.css
-adaptresourcefilecontents **.fxml
-adaptclassstrings

# Keep all annotations and meta-data
-keepattributes *Annotation*,Signature,EnclosingMethod

# Keep entry-point class
-keep class com.zenjava.test.javafx_and_proguard.MainApp {
    public static void main(java.lang.String[]);
}

# Keep all classes inside application
-keep,allowobfuscation class com.zenjava.test.javafx_and_proguard.** {
}

# Keep names of fields marked with @FXML attribute
-keepclassmembers class * {
    @javafx.fxml.FXML *;
}

编辑:对于文档完整性,缺少pom-configuration-part

<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>
        <proguardVersion>5.2</proguardVersion>
        <libs>
            <lib>${java.home}/lib/rt.jar</lib>
            <lib>${java.home}/lib/ext/jfxrt.jar</lib>
            <lib>${java.home}/lib/jce.jar</lib>
        </libs>
    </configuration>
    <dependencies>
        <dependency>
            <groupId>net.sf.proguard</groupId>
            <artifactId>proguard-base</artifactId>
            <version>5.2.1</version>
            <scope>runtime</scope>
        </dependency>
    </dependencies>
</plugin>

免责声明:我是javafx-maven-plugin的维护者;)