ResolutionException с Hibernate и JavaFx - PullRequest
0 голосов
/ 08 ноября 2019

У меня какая-то проблема, и мне не повезло выяснить, как ее исправить.

У меня есть проект JavaFx, в котором есть Hibernate и Proguard. Но всякий раз, когда я пытаюсь выполнить задачу, 'runProguard' завершается с java.lang.module.ResolutionException.

Меня удивляет тот факт, что мой проект не использует модули. Есть ли способ исправить это?

Задача: runProguard СБОЙ Задача ': runProguard' не обновлена, поскольку: Задача не объявила никаких выходных данных, несмотря на выполнение действий. Запуск процесса 'команда ... Успешно запущенный процесс' команда 'C: \ Program Files \ Java \ openjdk-11_windows-x64_bin \ bin \ java.exe' 'Ошибка при инициализации загрузочного слоя java.lang.module.ResolutionException: Модулиjava.activation и экспортный пакет активации javax.activation в модуль java.transaction: runProguard (поток [рабочий поток демона, 6,5, основной]) завершен. Заняло 1,094 с.

buildscript {
   repositories {
      jcenter()
      mavenCentral()
   }
   dependencies {
      classpath 'net.sf.proguard:proguard-gradle:6.2.0'
   }
}

plugins {
   id 'java'
   id 'application'
   id 'org.openjfx.javafxplugin' version '0.0.8'
   id 'org.beryx.runtime' version '1.7.1'

}


dependencies {
   compile "org.controlsfx:controlsfx:11.0.0"
   compile "eu.hansolo:tilesfx:11.13"
   compile "com.jfoenix:jfoenix:9.0.9"
   compile "org.apache.httpcomponents:httpclient:4.5.9"
   compile "org.json:json:20180813"
   compile "mysql:mysql-connector-java:8.0.17"
   compile "org.jasypt:jasypt:1.9.3"
   compile "com.sun.mail:javax.mail:1.6.2"
   compile "commons-validator:commons-validator:1.6"

   // https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0
   compile "org.hibernate:hibernate-c3p0:5.4.7.Final"

   // https://mvnrepository.com/artifact/org.hibernate/hibernate-envers
   compile 'org.hibernate:hibernate-envers:5.4.8.Final'


   // https://mvnrepository.com/artifact/de.jensd/fontawesomefx-commons
   runtime group: 'de.jensd', name: 'fontawesomefx-commons', version: '11.0'

   // https://mvnrepository.com/artifact/de.jensd/fontawesomefx-fontawesome
   compile group: 'de.jensd', name: 'fontawesomefx-fontawesome', version: '4.7.0-9.1.2'

}

repositories {
   jcenter()
   mavenCentral()
}

javafx {
   version = "13"
   modules = ['javafx.controls', 'javafx.graphics', 'javafx.fxml']
}

mainClassName = 'Main'

runtime {
   options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages']

   jpackage {
      jpackageHome = 'C:/Program Files/Java/openjdk-14-jpackage+1-49_windows-x64_bin/'

      if (org.gradle.internal.os.OperatingSystem.current().windows) {
         installerType = 'msi'
         imageOptions = []
         installerOptions = ['--win-per-user-install',
                             '--win-dir-chooser',
                             '--win-menu',
                             '--win-shortcut',
                             '--verbose',
                             '--description', 'Test of proguard with jPackage',
                             '--name', 'Test-ProguardJPackage',
                             '--vendor', 'DoesItMatter']
      }
   }
}


jar {
   dependsOn 'cleanAfterProguard'
   manifest {
      attributes(
         'Main-Class': 'org.openjfx.Launcher'
      )
   }
   from zipTree("${buildDir}/proguard/output.jar")
}

task cleanClasses(type: Delete) {
   delete "${buildDir}/classes/java/main"
   delete "${buildDir}/resources/java/main"
}

classes.dependsOn(cleanClasses)

// 2.2 Add proguard task
task proguard(type: proguard.gradle.ProGuardTask, dependsOn: classes) {
   injars project.sourceSets.main.output
   outjars "${buildDir}/proguard/output.jar"

   libraryjars project.sourceSets.main.compileClasspath

   configuration 'proguard.conf'
}

// 2.3 Clean after proguard task
task cleanAfterProguard(type: Delete, dependsOn: proguard) {
   delete "${buildDir}/classes/java/main"
   delete "${buildDir}/resources/java/main"
}

// 2.4 Extract output jar to buildDir
task unpackProguardOutput(type: Copy, dependsOn: cleanAfterProguard) {
   from zipTree("${buildDir}/proguard/output.jar")
   into file("${buildDir}/classes/java/main")
}


// 3. Create a task to run the app with the proguarded buildDir
task runProguard(type: JavaExec, dependsOn: unpackProguardOutput) {
   classpath = sourceSets.main.runtimeClasspath
   jvmArgs = ['--module-path', classpath.asPath,
              '--add-modules', 'javafx.controls,javafx.fxml']
   main = 'Main' // <-- this name will depend on the proguard result
}


jar.dependsOn(unpackProguardOutput)

Это репо: https://github.com/KenobySky/hellofx

...