我正在针对 Java EE 5 在 Netbeans 中编译我的 Web 应用程序。我知道该String.isEmpty()
功能仅在 Java 6 中受支持。话虽如此,我仍然可以.isEmpty()
在我的代码中使用 编译我的项目。
如果我针对 Java EE 5 进行编译,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 版本是向后兼容的,因此您可以使用与 Java 5 兼容的容器并在 Java SE 6 或 Java SE 7 之上运行它。
您可以通过检查项目“ Properties > Source > Source/Binary Format ”来检查 Netbeans 使用的兼容性级别
如果您仍然对“Java vs Java EE”有疑问,您可以在 SO 上查找关于 Java SE 和 Java EE 之间区别的几个问题。