JBoss - 应用程序是否必须在JBOSS运行的同一jdk下编译?

时间:2010-03-12 19:33:14

标签: java jboss java-ee

我对JBOSS有点困惑,并在不同的JDK下运行它。例如,假设我正在运行JBOSS 5.1,在启动它之前,我将JAVA_HOME设置为指向JDK5。我们还假设我的Java EE应用程序是在JDK6下编译的。如果我将Java EE应用程序(在JDK6下编译)部署到JBOSS,当我尝试查找我的EJB时,会出现以下错误:

javax.naming.NameNotFoundException: tc_test_project not bound

但是如果我在JDK5下重新编译我的代码并重新部署它,它可以正常工作并且能够查找EJB。

同样,我可以将JAVA_HOME设置为JDK6并启动JBOSS,我的代码(在JDK6下编译)将在该场景下正常运行(它能够找到EBJ等)。

所以看起来你的Java EE应用程序需要在JBOSS服务器运行的同一个JAVA_HOME下编译,或者我误解了什么?只是想得到确认,谢谢。

2 个答案:

答案 0 :(得分:6)

必须使用用于启动JBOSS的相同或更低版本的JDK编译应用程序。这是因为应用程序将使用相同的JVM。

答案 1 :(得分:-1)

不,只要您将-target 1.5作为选项传递,您应该能够使用JDK6进行编译,因此它会输出java 1.5类文件。如果要标记使用较新的语言功能,请添加-source 1.5。

因此,只要您定位将在其下运行应用程序的VM版本(并且仅使用目标VM中存在的功能),就可以使用较新的JDK进行编译。

编辑:我从未声称这是一个好主意或正确,只是有可能。