你是对的。 Multi-catch 是 Java 7 语言特性,无法将其编译为 Java 6(或更早版本)JVM 兼容字节码。
使用 Java 7 编译器,以下允许您编译 Java 6 兼容字节码:
javac -source 1.6 -target 1.6 MyJavaFile.java
当您尝试编译 Java 7 语言功能(例如,multi-catch)时,您将获得:
roach$ javac -source 1.6 -target 1.6 test.java
warning: [options] bootstrap class path not set in conjunction with -source 1.6
test.java:9: error: multi-catch statement is not supported in -source 1.6
} catch (NullPointerException | BufferOverflowException ex) {}
^
(use -source 7 or higher to enable multi-catch statement)
1 error
1 warning
(有关warning 含义的更多信息,请参阅:
https://blogs.oracle.com/darcy/entry/bootclasspath_older_source - 与本次讨论无关)
如果您将-source 标志更改为1.7,您将收到:
源版本 1.7 需要目标版本 1.7
因为...您无法将 Java 7 源代码(例如具有 Java 7 功能的源代码)编译为 Java 6 兼容字节码。
如果您使用 Java 7 编译它(没有 -source 或 -target 标志),您将获得无法在
roach$ /Library/Java/Home/bin/java net.mostlyharmless.multicatch.App
线程“主”java.lang.UnsupportedClassVersionError 中的异常:
net/mostlyharmless/multicatch/App : 不支持的 major.minor 版本
51.0