
该错误表示源代码存在语法问题导致无法编译,核心原因是 java 不支持类似 parametername: value 的命名参数调用方式,应直接按形参顺序传入实参。
该错误表示源代码存在语法问题导致无法编译,核心原因是 java 不支持类似 parametername: value 的命名参数调用方式,应直接按形参顺序传入实参。
在你提供的代码中,问题出在 main 方法的第 10 行:
fungsiVoid( input: "apa pun");
这段写法看似直观(类似 Python 或 Kotlin 的命名参数),但 Java 自始至终不支持命名参数(named arguments)语法。JVM 在解析时遇到 input: 会识别为非法标识符或语法错误,导致编译器无法生成有效抽象语法树(AST),进而抛出运行时异常:
Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - Erroneous tree type: <any>
⚠️ 注意:这个异常通常出现在 IDE(如 NetBeans 或某些配置下的 IntelliJ)中——它并非标准 JVM 启动时的编译错误,而是 IDE 在“模拟运行”未成功编译的代码时抛出的兜底异常。真正根源是编译失败(javac 阶段已报错),IDE 却尝试执行了无效字节码。
✅ 正确写法是省略参数名,仅按声明顺序传递实参:
立即学习“Java免费学习笔记(深入)”;
fungsiVoid("apa pun"); // ✅ 正确:字符串字面量直接传入同时注意以下几点以避免同类问题:
- Java 方法调用始终遵循 位置绑定(positional binding),而非名称绑定;
- 参数名仅在方法定义中用于可读性,在调用处不可显式使用;
- 若方法有多个参数(如 void process(String name, int age)),调用必须严格对应顺序:process("Alice", 25),不可写作 process(name: "Alice", age: 25);
- 如需提升可读性与灵活性,可考虑使用构建者模式(Builder Pattern)、记录类(record)或封装参数对象。
修正后的完整 main 方法如下:
public static void main(String[] args) {
System.out.println(simpel()); // 输出 10.0
fungsiVoid("apa pun"); // ✅ 调用无参名,正确编译执行
}总结:Uncompilable source code - Erroneous tree type: <any> 是一个“结果型提示”,本质是语法错误触发编译中断。遇到此异常,应优先检查代码是否含有非 Java 语法(如冒号参数、箭头函数、类型推导等),并回归基础语法规则验证。


















