当前位置: 首页 > 知识库问答 >
问题:

Gradle/JavaFX项目中javafx.base模块的两个版本

葛承德
2023-03-14

完整错误:错误:在。/build/jlinkbase/jlinkjars(Infinite Recharge Client-V4.0.0-alpha.jar和javafx-base-11-mac.jar)中发现了两个版本的模块javafx.base

Build.Gradle

plugins {
    id 'java'
    id 'idea'
    id "org.openjfx.javafxplugin" version "0.0.8"
    id 'org.beryx.jlink' version '2.17.2'
    id "com.github.johnrengelman.shadow" version "5.2.0"
    id 'org.jetbrains.kotlin.jvm' version '1.3.61'
    id 'com.github.gmazzo.buildconfig' version '1.6.2'
}

group = "com.github.RaiderRobotix"
version = "v4.0.0-alpha"

repositories {
    maven { url 'https://jitpack.io' }
    jcenter()
}

java {
    sourceCompatibility = JavaVersion.VERSION_11
    targetCompatibility = JavaVersion.VERSION_11
}

jar {
    manifest {
        attributes (
            'Implementation-Title': 'Raider Robotix Scouting Client',
            'Implementation-Version': project.version,
            'Main-Class': 'org.usfirst.frc.team25.scouting.client.ui.Main'
        )
    }
    from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
}


dependencies {
    implementation 'com.github.RaiderRobotix:Scouting-Models:29617b7dcc'
    implementation 'com.github.RaiderRobotix:blue-alliance-api-java-library:3.0.0'

    implementation 'org.projectlombok:lombok:1.18.10'
    annotationProcessor 'org.projectlombok:lombok:1.18.10'

    implementation 'com.google.code.gson:gson:2.+'
    implementation 'commons-io:commons-io:2.+'
    implementation 'org.apache.commons:commons-math3:3.+'

    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
    implementation "org.jetbrains.kotlin:kotlin-reflect:1.3.61"

}

buildConfig {
    packageName "com.raiderrobotix"
    buildConfigField 'String', 'TBA_API_KEY', project['TBA_API_KEY']
    // The escaped quotes here are NEEDED. The plugin copies the TEXT LITERAL given to it. The quotes are part of this.
    buildConfigField 'String', 'VERSION', "\"$version\""
}

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

jlink {
    launcher {
        name = 'Scouting Client'
    }
}

application {
    mainClassName = 'org.raiderrobotix.scouting.client/org.raiderrobotix.scouting.client.ui.Main'
}

wrapper {
    gradleVersion = '6.1.1'
}

compileKotlin {
    kotlinOptions {
        jvmTarget = "11"
    }
}

compileTestKotlin {
    kotlinOptions {
        jvmTarget = "11"
    }
}

共有1个答案

海信鸥
2023-03-14

我也遇到了类似的问题,我在jlink过程中的具体错误是:

Error: Two versions of module javafx.base found in C:\Users\tareh\code\cleopetra\build\jlinkbase\jlinkjars (javafx-base-11.0.2-win.jar and javafx-base-11.0.2-linux.jar)

Execution failed for task ':jlink'.

我从https://github.com/openjfx/javafx-gradle-plugin/issues/65中得到了一些启发,并更改了build.gradle中的一个依赖项:

dependencies {
    // Get rid of this
    // compile group: 'org.controlsfx', name: 'controlsfx', version: '11.0.3'

    // Use this instead
    implementation('org.controlsfx:controlsfx:11.0.3') {
        exclude group: 'org.openjfx'
    }
}

在我这样做之后,jlink错误消失了,而且我注意到IntelliJ模块依赖项中列出的linux JAR也消失了(我在Windows上)。

 类似资料:
  • 我有一个Android Studio项目,包含几个子项目(又名:模块)。我想从命令行构建其中一些子项目。

  • 问题内容: 我最近开始使用Gradle并替换了我现有的基于Maven的项目。过去我在使用Maven处理多模块构建时遇到很多问题。在处理多模块水龙头时,Gradle呼吸了新鲜空气,但还不是很完美。 我的项目有以下文件夹布局: 我遇到的问题是“ EnterpriseApp1”和“ ClientApplication”都依赖于CommonLib项目。我不知道如何配置“ EnterpriseApp1”构建

  • 我正在记录一个尚未完全完成的winForms项目,这意味着还有另一个程序员正在编写代码。所以我已经在项目的副本中写了一些重要的评论。此外,我使用sandcastle创建帮助文件。 我的问题:将项目的旧副本中的注释复制到新版本中的最佳方法(如果有的话)是什么?也许沙堡可以做一些事情,比如导入一个留档到一个项目? 我知道这样做并不明智,但我必须检查是否有办法保存文档工作。

  • 我有一个多模块gradle项目。 Root有以下模块:核心、应用程序(依赖于核心)、web(依赖于应用程序、核心) 从https://plugins.gradle.org/plugin/io.spring.dependency-management 我曾经用过 核心build.gradle内。 当我触发 在root命令提示符下,CoreJAR已成功构建,但应用程序无法解析依赖项的版本。 commo

  • 我有一个基于java和kotlin的多模块gradle项目。我正在尝试设置声纳分析。我在根项目中配置了sonar,并用CircleCI进行了分析。sonarcloud中的结果仅适用于其中一个子项目。 我的项目结构如下: 项目A/构建。格拉德尔 项目B/构建。格拉德尔 ProjectC/build。格拉德尔 建造。格拉德尔 这是我的根构建。格雷德尔。

  • 我想在eclipse下处理同一个多模块maven项目的两个不同版本。 不幸的是,当您在eclipse下导入多模块maven项目时,您可以自己更改父模块项目名称以防止冲突,但不能更改子模块项目名称。子模块作为根项目导入,以模块名称命名。显然在导入过程中无法重命名它们。 在理想情况下,我希望保持pom不变。显然,我希望保持相同的eclipse工作区。。。