Gradle7.1+Kotlin+Java11环境使用rometools报unresolved reference错误
问题根因
所有unresolved reference类找不到报错的核心原因是运行/编译环境未引入rometools的依赖包,编译器无法定位对应类的定义。
解决步骤
场景1:你在Gradle管理的常规Kotlin/JVM项目中运行代码
- 打开项目根目录的
build.gradle.kts文件,在dependencies代码块中添加rometools依赖:
dependencies { // 保留你项目已有的其他依赖 implementation("com.rometools:rome:2.1.0") }
- 触发Gradle项目同步(IDEA可点击右上角的Gradle大象图标执行同步),同步完成后依赖会自动下载,引用报错即可消失。
场景2:你当前运行的是IDEA的Kotlin scratch脚本(从报错路径的scratch.kts可判断)
scratch脚本默认不会复用项目的Gradle依赖,可选择两种方案处理:
- 方案1:将当前代码迁移到项目的源码目录下作为普通代码运行,自动继承项目配置的rometools依赖
- 方案2:在scratch.kts文件开头添加依赖引入指令,Kotlin脚本支持直接声明第三方依赖:
@file:DependsOn("com.rometools:rome:2.1.0") import com.rometools.rome.feed.synd.SyndFeed import com.rometools.rome.io.SyndFeedInput import com.rometools.rome.io.XmlReader import java.net.URL fun parseRSSFeed(feedUrl:String): SyndFeed? { val feed = SyndFeedInput().build(XmlReader(URL(feedUrl))) println(feed.title) return feed }
注:你原代码中参数名和内部变量名都叫
feed存在重名冲突,示例中已将参数名改为feedUrl避免编译警告。
内容的提问来源于stack exchange,提问作者SomethingsGottaGive
相关产品推荐
相关产品推荐

