我正在用Netbeans编译我的web应用程序来对抗JavaEE5。我知道只有Java6支持String.isEmpty()函数。话虽如此,我仍然可以在我的代码中使用.isEmpty()编译我的项目。
如果我是在Java EE 5上编译,为什么Netbeans允许我的web应用程序进行编译?
发布于 2013-02-09 07:48:24
编译器级别不等于用于编译的JDK级别。编译器级别只检查语法,当然会创建不同的输出。但是编译器本身会在类路径上使用jdk,所以如果您使用java5选项进行编译,但是在类路径上使用java6jar,那么代码将不会出现错误。您应该检查您的类路径。
发布于 2013-02-09 08:05:07
正如许多人指出的那样,Java EE版本并不严格地与Java SE (JDK)版本绑定。大多数情况下,它们需要最低的Java SE版本,但与更高版本兼容。
JavaEE5规范(downloadable PDF here)说:
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“有疑问,你可以在这里找到关于Java SE和Java EE之间的区别的几个问题。
https://stackoverflow.com/questions/14741524
复制相似问题