我正在使用Java EE 5在Netbeans中编译我的web应用程序。我知道String.isEmpty()
函数仅在Java 6中受支持。话虽如此,我仍然可以使用代码中的.isEmpty()
编译我的项目。
如果我使用JavaEE5进行编译,为什么Netbeans允许我的web应用程序进行编译?
编译器级别不等于用于编译的JDK级别。编译器级别只检查语法,当然会创建不同的输出。但是编译器本身会在类路径上使用jdk,所以如果您使用java 5选项进行编译,但在类路径中使用java 6 jar,则代码编译时不会出错。您应该检查类路径。
正如许多人所指出的,Java EE版本与Java SE(JDK)版本没有严格绑定。大多数情况下,它们需要最低限度的Java SE版本,但与更高版本兼容。
Java EE 5规范(此处可下载PDF)中写道:
This specification requires that containers provide a Java Compatible™ runtime
environment, as defined by the Java 2 Platform, Standard Edition, v5.0 specification
(J2SE)
由于JSE版本是向后兼容的,您可以使用一个与Java5兼容的容器,并在JavaSE6或JavaSE7之上运行它。
您可以通过检查项目"来检查Netbeans正在使用的兼容性级别属性>来源>源/二进制格式";
如果你仍然对";Java与Java EE";您可以在SO上查找有关Java SE和Java EE之间差异的几个问题。