19

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

问题是,在我寻找有关使用 OpenJDK 进行 Java EE 开发的信息的任何地方,我都发现 OpenJDK 只是 Java SE,例如此处此处。尽管如此,在我的应用程序中,我使用javax.*了很多,并且正在工作。

我已经下载了 OpenJDK 6 的源代码,并且找到/jdk/src/share/classes/javax/了包含很多类的文件夹,但是缺少一些重要的东西,例如javax.servlet,javax.ejbjavax.faces.

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

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

请注意,Oracle 列出了用于 SE 的 SDK 和用于 EE 的 SDK,所以我想它们是不同的,对吧?

亲切的问候

4

2 回答 2

20

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

也可以看看:

于 2012-06-16T04:36:37.700 回答
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)
于 2020-01-21T03:31:41.137 回答