You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 21预览版try-with-resources用未命名符号报错咨询

问题分析与解决

你的用法本身没问题,但必须启用预览特性编译和运行——JEP443是Java 21的预览特性,默认处于禁用状态,这才是导致报错的核心原因。

错误根源

没开预览特性时,编译器无法正确解析var _这种未命名变量语法,编译生成的类文件里会出现非法的空名字段,JVM加载时自然会抛出ClassFormatError。

正确操作方式

编译和运行时都得加上预览特性参数:

  1. 编译命令:
    javac --enable-preview --release 21 YourClass.java
    
  2. 运行命令:
    java --enable-preview YourClass
    

额外简化写法

如果完全不需要在代码里引用这个资源对象,JEP443还允许更简洁的写法,直接省略变量声明:

try (new FileInputStream("/Users/task/Desktop/ttt")) {
    // 你的业务逻辑
} catch (IOException e) {
    throw new RuntimeException(e);
}

当然,这种写法同样需要启用预览特性才能正常编译运行。

内容的提问来源于stack exchange,提问作者kevin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 02:04:53