OpenJDK开发JavaEE?

时间:2012-06-16 04:34:54

标签: java java-ee openjdk

我正在开发JavaEE应用程序并将其部署在Glassfish 3中。我使用的是Ubuntu 12.04,Eclipse用于EE开发人员,OpenJDK 6 JDK(包openjdk-6-jdk)。到目前为止没问题。

问题在于,在我查找有关使用OpenJDK进行Java EE开发的信息时,我发现OpenJDK只是Java SE,例如herehere。然而,在我的应用程序中,我正在使用javax.*,并且正在使用。

我已经下载了OpenJDK 6的源代码,我找到了包含很多类的文件夹/jdk/src/share/classes/javax/,但遗漏了一些重要内容,如javax.servletjavax.ejb或{{1 }}

同样,除了OpenJDK,我没有任何其他JDK,也没有GCJ或Oracle。

我的问题是:这怎么可能? OpenJDK是否支持JavaEE API?可以用它,还是我需要下载并安装Oracle JDK?我在这里不明白?

请注意,除了SDK for EE之外,Oracle列表SDK for SE,所以我认为它们不同,对吧?

亲切的问候

2 个答案:

答案 0 :(得分:12)

您的Glassfish服务器是具体的Java EE实现。请注意,OpenJDK是一个具体的Java SE实现。另请注意,每当您从Oracle站点download Java EE时,基本上所有的内容都是Glassfish以及一堆文档和示例。

另见:

答案 1 :(得分:2)

事实是J2EE没有指定JVM,Glassfish4和5都检查Oracle JVM,并且不与其他JVM一起运行。

请注意,OpenJDK根本不适用于Glassfish。 Glassfish正在专门寻找OracleJDK。

如果您尝试使用OpenJDK 12.0在MacOS上启动Glassfish,则会发生以下情况:

bin/asadmin start-domain
Exception in thread "main" java.lang.NullPointerException
    at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.initializeServiceLocator(AbstractModulesRegistryImpl.java:152)
    at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.newServiceLocator(AbstractModulesRegistryImpl.java:144)
    at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:218)
    at com.sun.enterprise.module.common_impl.AbstractModulesRegistryImpl.createServiceLocator(AbstractModulesRegistryImpl.java:224)
    at com.sun.enterprise.module.single.StaticModulesRegistry.createServiceLocator(StaticModulesRegistry.java:88)
    at com.sun.enterprise.admin.cli.CLIContainer.getServiceLocator(CLIContainer.java:217)
    at com.sun.enterprise.admin.cli.CLIContainer.getLocalCommand(CLIContainer.java:255)
    at com.sun.enterprise.admin.cli.CLICommand.getCommand(CLICommand.java:231)
    at com.sun.enterprise.admin.cli.AdminMain.executeCommand(AdminMain.java:371)
    at com.sun.enterprise.admin.cli.AdminMain.doMain(AdminMain.java:306)
    at org.glassfish.admin.cli.AsadminMain.main(AsadminMain.java:57)