我使用no.nils.wsdl2java插件,完整的gradle.build文件看起来像:
plugins {
id 'org.springframework.boot' version '2.3.4.RELEASE'
id 'io.spring.dependency-management' version '1.0.12.RELEASE'
id 'java'
id "no.nils.wsdl2java" version "0.10"
}
group = 'com.example'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '1.8'
configurations {
jaxb
compileOnly {
extendsFrom annotationProcessor
}
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
implementation 'org.springframework.boot:spring-boot-starter-web'
compileOnly 'org.projectlombok:lombok'
runtimeOnly 'com.oracle.database.jdbc:ojdbc8'
annotationProcessor 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation group: 'com.oracle.ojdbc', name: 'orai18n', version: '19.3.0.0'
implementation 'org.springframework.boot:spring-boot-starter-security'
implementation 'com.google.code.gson:gson:2.8.5'
}
tasks.named('test') {
useJUnitPlatform()
}
wsdl2java {
generatedWsdlDir = file("build/generated/wsdl/Service")
wsdlsToGenerate = [
['-p', 'Service', '-wsdlLocation', 'classpath:wsdl/Service.wsdl',
'-autoNameResolution', "src/main/resources/wsdl/Service.wsdl"]
]
}
当我使用Gradle JVM版本11构建项目时,出现异常:
无法加载类'txtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtxtx'。
**但在版本8上出现错误:
org/apache/cxf/tools/wsdlto/WSDLToJava已由较新版本的Java运行时(类文件版本55.0)编译,此版本的Java运行时仅识别52.0之前的类文件版本。
我知道javax-〉jakarta名称空间迁移,但如何解决我的问题?
1条答案
按热度按时间atmip9wb1#
在您的build.gradle中添加以下内容:
以明确指定Apache CXF版本。它应该可以正确地使用Java 8编译。
这个错误说
org/apache/cxf/tools/wsdlto/WSDLToJava
是用Java 11编译的,但是你的项目使用的是Java 8。这个类是由wsdl2java
插件加载的:它是Apache CXF项目的一部分。要查看它的来源,可以打印依赖关系树:
在结果中,您可以找到:
org.apache.cxf:cxf-tools-wsdlto-databinding-jaxb
的版本设置为+
,因此gradle使用最新版本,目前为4.0.0。该插件在以下行中添加了此依赖关系:$cxfVersion
默认设置为+
,但您可以使用以下代码在build.gradle中覆盖它:使用先前的Apache CXF版本(与Java 8兼容)