Gradle 使用Hibernate和JavaFx解决异常

Gradle 使用Hibernate和JavaFx解决异常,gradle,javafx,proguard,java-platform-module-system,Gradle,Javafx,Proguard,Java Platform Module System,我有一些问题,我没有运气想出如何解决它 我有一个JavaFx项目,它有Hibernate和Proguard。但是,每当我尝试运行任务“runProguard”时,java.lang.module.ResolutionException就会失败 让我困惑的是,我的项目没有使用模块。 有没有办法解决这个问题 任务:runProguard失败任务:runProguard不是最新的 因为:尽管执行了操作,任务仍然没有声明任何输出。 正在启动进程的命令。。。已成功启动进程“”命令 “C:\Program

我有一些问题,我没有运气想出如何解决它

我有一个JavaFx项目,它有Hibernate和Proguard。但是,每当我尝试运行任务“runProguard”时,java.lang.module.ResolutionException就会失败

让我困惑的是,我的项目没有使用模块。 有没有办法解决这个问题

任务:runProguard失败任务:runProguard不是最新的 因为:尽管执行了操作,任务仍然没有声明任何输出。 正在启动进程的命令。。。已成功启动进程“”命令 “C:\Program Files\Java\openjdk-11\U windows-x64\U bin\bin\Java.exe”错误 在启动层初始化期间发生 java.lang.module.ResolutionException:模块java.activation和 激活导出包javax.activation到模块java.transaction :runProguard(线程[守护进程工作线程6,5,main])已完成。拿 1.094秒

buildscript{
存储库{
jcenter()
mavenCentral()
}
依赖关系{
类路径“net.sf.proguard:proguard gradle:6.2.0”
}
}
插件{
id‘java’
id“应用程序”
id“org.openjfx.javafxplugin”版本“0.0.8”
id“org.beryx.runtime”版本“1.7.1”
}
依赖关系{
编译“org.controlsfx:controlsfx:11.0.0”
编写“eu.hansolo:tilesfx:11.13”
编译“com.jfoenix:jfoenix:9.0.9”
编译“org.apache.httpcomponents:httpclient:4.5.9”
编译“org.json:json:20180813”
编译“mysql:mysql连接器java:8.0.17”
编译“org.jasypt:jasypt:1.9.3”
编译“com.sun.mail:javax.mail:1.6.2”
编译“commons validator:commons validator:1.6”
// https://mvnrepository.com/artifact/org.hibernate/hibernate-c3p0
编译“org.hibernate:hibernate-c3p0:5.4.7.Final”
// https://mvnrepository.com/artifact/org.hibernate/hibernate-envers
编译“org.hibernate:hibernate envers:5.4.8.Final”
// https://mvnrepository.com/artifact/de.jensd/fontawesomefx-commons
运行时组:“de.jensd”,名称:“fontawesomefx commons”,版本:“11.0”
// https://mvnrepository.com/artifact/de.jensd/fontawesomefx-fontawesome
编译组:“de.jensd”,名称:“fontawesomefx fontawesome”,版本:“4.7.0-9.1.2”
}
存储库{
jcenter()
mavenCentral()
}
javafx{
version=“13”
modules=['javafx.controls','javafx.graphics','javafx.fxml']
}
mainClassName='Main'
运行时{
选项=['--strip debug','--compress',2','--no header files','--no man pages']
包装{
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”,
“--赢菜单”,
“--赢得捷径”,
“--冗长”,
“--说明”,“带jPackage的proguard测试”,
“--name”,“Test ProguardJPackage”,
“--vendor”、“DoesItMatter”]
}
}
}
罐子{
dependsOn'cleanAfterProguard'
显示{
属性(
“主类”:“org.openjfx.Launcher”
)
}
来自zipTree(${buildDir}/proguard/output.jar)
}
任务类(类型:删除){
删除“${buildDir}/classes/java/main”
删除“${buildDir}/resources/java/main”
}
classes.dependsOn(清洁类)
//2.2添加proguard任务
任务proguard(类型:proguard.gradle.ProGuardTask,依赖项:类){
injars project.sourceSets.main.output
outjars“${buildDir}/proguard/output.jar”
libraryjars project.sourceSets.main.compileClasspath
配置“proguard.conf”
}
//2.3在执行proguard任务后进行清洁
任务cleanAfterProguard(类型:Delete,dependsOn:proguard){
删除“${buildDir}/classes/java/main”
删除“${buildDir}/resources/java/main”
}
//2.4将输出jar提取到buildDir
任务unpackProguardOutput(类型:Copy,dependsOn:cleanAfterProguard){
来自zipTree(${buildDir}/proguard/output.jar)
放入文件(${buildDir}/classes/java/main)
}

// 3. 创建一个任务以使用proguarded buildDir运行应用程序 任务runProguard(类型:JavaExec,dependsOn:unpproguardoutput){ classpath=sourceset.main.runtimeClasspath jvmArgs=['--module path',classpath.asPath, “--添加模块”、“javafx.controls、javafx.fxml”]
main='main'//不相关,但是在
main.java
中,应该避免调用
HelloFX.main
,而是执行
Application.launch(HelloFX.class,args)
。这意味着在
HelloFX.java
中,您不需要main。它解决了一些错误。我稍后会获取这些错误的链接。但在一些非常特殊的情况下需要它。感谢您的回复如果您的项目不使用模块,请从
runProguard
中删除这些jvm参数task@smac89请写下来作为答案,这样我我可以给你正确的标志。我照你说的做了,它成功了。非常感谢//3.创建一个任务,用proguard buildDir任务runProguard(类型:JavaExec,dependsOn:unpproguardoutput){classpath=sourceset.main.runtimeClasspath jvmArgs=[]main='main'//
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)