为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

30秒到达战场 2022-09-22 16:36:31
我尝试首次使用 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'}
查看完整描述

2 回答

?
慕斯王

TA贡献1864条经验 获得超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 通过许多可传递的依赖项被拉入。


查看完整回答
反对 回复 2022-09-22
?
江户川乱折腾

TA贡献1851条经验 获得超5个赞

org.apache.ecs.ConcreteElement来自阿帕奇元素构造集 (ECS),例如包含在 ecs-1.4.2.jar

要解决此问题,请向文件添加依赖项,如下所示:build.gradle

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


查看完整回答
反对 回复 2022-09-22
  • 2 回答
  • 0 关注
  • 108 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信