为 XNAT 导入 Gradle 项目时出现的问题 - 未解析的类型

我尝试首次使用 Eclipse 2018-12 为 XNAT 导入 Gradle 项目。我创建了项目,右键单击,选择“渐变”,然后选择“现有渐变项目”。导入完成后,简单上传失败.java出现错误 - “无法解析类型。它是从所需的.class文件中间接引用的“。我已经检查过了,我有共享资源-lang3-3.8.1.jar。


我需要做些什么来解决这个问题?


我的构建.gradle 依赖项是:


// TODO: This is a pretty minimal set of dependencies, so don't worry if you need to add more.

dependencies {

    implementation("org.nrg.xnat:web") {

        transitive = false

    }

    implementation("org.nrg.xnat:xnat-data-models") {

        transitive = false

    }

    implementation("org.nrg.xdat:core") {

        transitive = false

    }

    implementation "org.nrg:prefs"

    implementation "org.nrg:framework"


    implementation("turbine:turbine") {

        transitive = false

    }

    implementation("org.apache.velocity:velocity") {

        transitive = false

    }

    implementation("stratum:stratum") {

        transitive = false

    }


    implementation "log4j:log4j"

    implementation "io.springfox:springfox-swagger2"


    compile group: 'ecs', name: 'ecs', version: '1.4.2'

}


30秒到达战场
浏览 109回答 2
2回答

慕斯王

另一种选择是将组织.nrg.xnat:web 的依赖项配置从编译或实现更改为仅编译。这使您可以为插件声明较少的依赖项,因为您可以允许传递依赖项。ECS 依赖关系来自 XNAT 本身的类,因此允许传递依赖关系意味着您不必声明可能间接引用的所有内容。我刚刚在XNAT LDAP身份验证插件中进行了此更改,然后从以下位置开始:implementation("org.nrg.xnat:web") {    transitive = false}implementation("org.nrg.xnat:xnat-data-models") {    transitive = false}implementation("org.nrg.xdat:core") {    transitive = false}implementation("org.nrg:prefs") {    transitive = false}implementation("org.nrg:framework") {    transitive = false}implementation "org.springframework:spring-web"implementation "org.springframework.security:spring-security-config"implementation "org.springframework.security:spring-security-ldap"implementation "org.apache.commons:commons-lang3"implementation "org.hibernate.javax.persistence:hibernate-jpa-2.1-api"implementation "com.google.guava:guava"implementation "org.slf4j:slf4j-api"implementation "log4j:log4j"implementation "org.springframework.security:spring-security-web"implementation "javax.servlet:javax.servlet-api"compileOnly "com.google.code.findbugs:jsr305"compileOnly "org.apache.ivy:ivy:2.4.0"compileOnly("stratum:stratum") {    transitive = false}对此:compileOnly "org.nrg.xnat:web"compileOnly "org.springframework.security:spring-security-ldap"compileOnly "org.slf4j:slf4j-nop"如果您运行此命令:$ ./gradlew dependencies你会看到 ecs:ecs:1.4.2 通过许多可传递的依赖项被拉入。

江户川乱折腾

org.apache.ecs.ConcreteElement来自阿帕奇元素构造集 (ECS),例如包含在 ecs-1.4.2.jar。要解决此问题,请向文件添加依赖项,如下所示:build.gradle//   compile group: 'ecs', name: 'ecs', version: '1.4.2'
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java