I am trying my application.
[Java 17, Gradel 7.4 JavaFX] to encrypt with proGuard.
For this I use my gradle.build.
However, I keep getting an error and can’t find a way to pinpoint the cause
Here my config.
My gradle.build
import proguard.gradle.ProGuardTask
buildscript
{
dependencies
{
classpath 'com.guardsquare:proguard-gradle:7.3.0-beta2'
}
}
plugins
{
id 'java'
id 'application'
id 'jacoco'
id 'org.openjfx.javafxplugin' version '0.0.13'
id 'org.beryx.jlink' version '2.24.4'
}
repositories
{
mavenCentral()
}
version '1.0.0.0'
// differenzierte Fehlermeldungen
allprojects
{
// Projects
gradle.projectsEvaluated
{
tasks.withType(JavaCompile)
{
options.encoding = 'UTF-8'
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}
dependencies
{
implementation 'org.json:json:20220320'
implementation 'com.jcraft:jsch:0.1.55'
implementation 'commons-net:commons-net:3.8.0'
implementation 'net.lingala.zip4j:zip4j:1.3.2'
implementation 'com.googlecode.soundlibs:jlayer:1.0.1.4' // Converter from mp3 to wav
implementation 'de.sciss:jump3r:1.0.5' // Converter from wav to mp3
// JASPER
implementation 'com.lowagie:itext:4.2.0'
implementation 'net.sf.jasperreports:jasperreports:6.19.0'
testImplementation 'junit:junit:4.13.2'
}
javafx
{
version = "18"
modules = [ 'javafx.base', 'javafx.controls', 'javafx.fxml', 'javafx.graphics', 'javafx.media', 'javafx.swing', 'javafx.web' ]
}
application
{
mainClass.set("org.joobsoft.vt.MAIN.Main")
}
ext.baseCoordinates = "${project.name}-${project.version}"
task proguard(type: proguard.gradle.ProGuardTask, dependsOn: jar) // dependsOn -> Reihenfolge: erst Jar dann Proguard
{
configuration file("proguard.pro")
injars(layout.buildDirectory.file("libs/${baseCoordinates}.jar"))
outjars(layout.buildDirectory.file("libs/${baseCoordinates}-obfu.jar"))
libraryjars "${System.getProperty('java.home')}/jmods/java.base.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
libraryjars "${System.getProperty('java.home')}/jmods/java.desktop.jmod", jarfilter: '!**.jar', filter: '!module-info.class'
println "${System.getProperty('java.home')}/jmods/java.desktop.jmod"
}
assemble.dependsOn(proguard)
My config proguard.pro
#Gibt an, dass alle umbenannten Pakete neu gepackt werden sollen, indem sie in das einzelne angegebene übergeordnete Paket verschoben werden. Ohne Argument oder mit leerem String ('') werden die Pakete in das Wurzelpaket verschoben.
-flattenpackagehierarchy ''
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
# fxml-Dateien einige Codenamen enthalten können, die im Java-Bytecode verschleiert sind. Sie können die folgende Option verwenden, um sicherzustellen, dass ProGuard diese Namen auch in den fxml-Dateien ändert;
-adaptresourcefilecontents **.fxml
#adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF
# fxml-Dateien selbst ändern müssen (wichtig, wenn sie mit dem Namen einer Klassendatei übereinstimmen müssen)
#-adaptresourcefilenames **.fxml
-keepclassmembernames class * {
@javafx.fxml.FXML *;
}
# Keep - Applications. Keep all application classes, along with their 'main' methods.
-keepclasseswithmembers public class org.joobsoft.vt.Main, obfuscationexample.ObfuscationExample
{
public static void main(java.lang.String[]);
}
# Gibt die Anzahl der durchzuführenden Optimierungsdurchläufe an. Standardmäßig wird ein einzelner Durchgang durchgeführt. Mehrere Durchgänge können zu weiteren Verbesserungen führen.
#-optimizationpasses 3
-printconfiguration proguard-debug-conf.txt
#-printmapping proguard-mapping.txt
#-dump proguard-dump.txt
#-addconfigurationdebugging
Gradel Fail:
> Configure project :
Project : => no module-info.java found
C:\Program Files\Java\jdk-17.0.3.1/jmods/java.looging.jmod
> Task :clean
> Task :compileJava
> Task :processResources
> Task :classes
> Task :jar
> Task :startScripts
> Task :distTar
> Task :distZip
> Task :proguard FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':proguard'.
> java.io.IOException: Please correct the above warnings first.
My Config in proguard-debug-config
-injars 'C:\Users\Jupp\Documents\NetBeansProjects\VTDESKTOP\build\libs\VTDESKTOP-1.0.0.0.jar'
-outjars 'C:\Users\Jupp\Documents\NetBeansProjects\VTDESKTOP\build\libs\VTDESKTOP-1.0.0.0-obfu.jar'
-libraryjars 'C:\Program Files\Java\jdk-17.0.3.1\jmods\java.base.jmod'(!**.jar;!module-info.class)
-libraryjars 'C:\Program Files\Java\jdk-17.0.3.1\jmods\java.desktop.jmod'(!**.jar;!module-info.class)
-forceprocessing
-dontshrink
-dontoptimize
-flattenpackagehierarchy ''
-keepattributes Exceptions,InnerClasses,Signature,Deprecated,SourceFile,LineNumberTable,LocalVariable*Table,*Annotation*,Synthetic,EnclosingMethod
-adaptresourcefilecontents **.fxml
-verbose
-printconfiguration 'C:\Users\Jupp\Documents\NetBeansProjects\VTDESKTOP\proguard-debug-conf.txt'
# adaptresourcefilecontents **.fxml,**.properties,META-INF/MANIFEST.MF
# fxml-Dateien selbst ändern müssen (wichtig, wenn sie mit dem Namen einer Klassendatei übereinstimmen müssen)
# -adaptresourcefilenames **.fxml
-keepclassmembers,allowshrinking class * {
@javafx.fxml.FXML
<fields>;
@javafx.fxml.FXML
<methods>;
}
# Keep - Applications. Keep all application classes, along with their 'main' methods.
-keepclasseswithmembers public class org.joobsoft.vt.Main,obfuscationexample.ObfuscationExample {
public static void main(java.lang.String[]);
}