针对Java 5编译web应用程序,但String.isEmpty()仍然被允许



我正在使用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之间差异的几个问题。

相关内容

  • 没有找到相关文章