2017-02-18 61 views
0

我認爲應該支持Java 8的了JavaFx,但是當我跑了,我有以下幾點:ProGuard 5.3.2版是否支持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

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

但我確實需要包含:/lib/ext/jfxrt.jar才能使其工作。

1

它可以搭配使用ProGuard和JavaFX,你可能想看看到從javaf - Maven的插件一個例子項目:用於

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 *; 
} 

編輯:用於文檔-完整性,缺少的聚甲醛,配置部分

<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的插件的維護者;)