Gradle Kotlin DSL创建Transformer实例报错:需2个类型参数的解决方法
解决Gradle Kotlin DSL中XML转换Transformer的类型参数错误
这个错误的核心原因是导入了错误的Transformer类:你当前代码里引用的是kotlinx.coroutines.Transformer(协程库中的类型转换接口,需要2个泛型参数),而XML转换需要的是JDK自带的javax.xml.transform.Transformer。
解决方法有两种:
方法1:使用全限定类名声明变量
直接在变量类型前加上完整的包路径,明确指定使用XML转换的Transformer类:
var liquibaseChangelog: File = File("${project.rootProject.projectDir}/src/main/resources/config/liquibase/changelog/changelog-root.xml") val source: Source = DOMSource(doc) val result = StreamResult(FileWriter(liquibaseChangelog)) // 显式指定全限定类名 val transformer: javax.xml.transform.Transformer = javax.xml.transform.TransformerFactory.newInstance().newTransformer() transformer.setOutputProperty(javax.xml.transform.OutputKeys.INDENT, "yes") transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "2")
方法2:修正导入语句
检查你的代码顶部导入,移除错误的协程Transformer导入(比如import kotlinx.coroutines.Transformer),替换为XML转换相关的正确导入:
import javax.xml.transform.Transformer import javax.xml.transform.TransformerFactory import javax.xml.transform.OutputKeys import javax.xml.transform.dom.DOMSource import javax.xml.transform.stream.StreamResult
之后就可以正常使用简化的类型声明了:
val transformer: Transformer = TransformerFactory.newInstance().newTransformer()
内容的提问来源于stack exchange,提问作者bobbyrne01
相关产品推荐
相关产品推荐

