Java报错:未闭合字符串字面量(unclosed string literal)原因咨询
报错原因与解决办法:unclosed string literal(未闭合字符串字面量)
报错原因
你使用了**Java文本块(Text Blocks)**语法(三个连续双引号"""包裹的多行字符串),但该特性是Java 15才正式纳入标准的(Java 13/14仅作为预览特性存在)。如果你的项目编译时使用的JDK版本低于15,编译器无法识别"""语法,会将第一个"视为字符串起始标记,后续的引号被当作普通字符处理,最终引发"未闭合字符串字面量"的编译错误。
解决办法
提供两种可行方案:
方案1:升级JDK版本
将项目的编译JDK版本升级至15或更高版本,同时同步更新构建工具的编译配置:
- Maven:在
pom.xml中设置maven.compiler.source和maven.compiler.target为15及以上 - Gradle:在
build.gradle中设置sourceCompatibility和targetCompatibility为15及以上
方案2:改用传统多行字符串写法
若暂时无法升级JDK,可将文本块替换为Java低版本支持的多行字符串拼接方式:
public List<ThreatImplMethod> getBySourcesAndTargets(List<ImpactSource> sources, List<ImpactTarget> targets, FetchPlan fetchPlan) { return load().query("select distinct im " + "from gwf_ThreatImplMethodLink imLink " + "join imLink.implMethods im " + "where imLink.source in :sources " + " and imLink.targets in :targets") .parameter("sources", sources) .parameter("targets", targets) .fetchPlan(fetchPlan) .list(); }
内容的提问来源于stack exchange,提问作者Dglasmann
相关产品推荐
相关产品推荐

