【问题标题】:Install Java EE 6 on OS X Lion在 OS X Lion 上安装 Java EE 6
【发布时间】:2012-02-10 22:21:40
【问题描述】:

我的 OS X Lion 工作站上的 Java Preferences 应用程序表明我安装了 Java SE 6 v1.6.0_29-b11-402(32 位和 64 位版本)。不幸的是,我需要的附加功能仅在企业版中可用。

'Jesper' 在'How install a specific jdk on Mac OS X?' 中的评论表明我需要使用 Apple 提供的 Java,而不是 Oracle/Sun 提供的 Java。不幸的是,Apple 似乎没有提供 Java 6 的企业版。

这让我提出了一些问题:

  1. 我错过了什么吗? Apple 是否提供 Java 6 的 EE?
  2. 如果 1 为真,我如何得到它?它可以与 Java SE 6 一起“并排”安装吗?
  3. 如果 1 为假,是否可以使用 Oracle/Sun 版本?有推荐的安装位置吗?我猜不推荐 /System/Library/Frameworks/JavaVM.framework/Versions/ 文件夹。
  4. Oracle/Sun 版本似乎包含许多我不想安装的附加功能(例如 Glassfish)。我可以安装没有附加功能的核心 SDK 吗? Tomcat 7 是否可以替代 Glassfish?

** 编辑 **

这个问题是我发布的另一个问题的结果:RESTful web service: java.lang.NullPointerException service.AbstractFacade.findAll。似乎此特定错误是缺少注释(@Stateless)的结果。此注释“包含”在 javax.ejb.* 命名空间中,该命名空间包含在一个不在我的工作站上的 .JAR 文件中。

这使我得出结论,我需要 Java 6 的“企业版”(其中会缺少 .JAR 文件和其他相关文件)。我想如果有办法确定缺少哪个 .JAR 文件(Netbeans 7 似乎对此没有帮助),我可能可以将其添加到项目中并跳过 EE 麻烦。

【问题讨论】:

    标签: java macos jakarta-ee osx-lion


    【解决方案1】:

    对于任何平台,都没有称为 Java Enterprise Edition 的特殊运行时。

    有 Java SE,企业版容器实现的只是一些接口。

    几年前,Sun 在提出 J2EE 时将市场与命名约定混淆了。它从来都不是一个独立的 Java 版本,只是添加了一些 API,如果服务器实现它们并通过一些认证,就可以称自己为 J2EE 容器。

    当他们开始称它为 Java EE 6 时,进一步混淆了市场。

    如果您针对这些 API 进行开发,您所需要的只是包含这些接口声明的 .jar 文件。您可以下载这些以前称为 J2EE 的 API .jar 文件。但它们本身毫无用处。

    但我怀疑您是否想要编写 Java EE 服务器,您想要使用一个。如果您想使用服务器,则需要下载符合 Java EE 的服务器并使用它提供的 .jar 文件。

    每个值得使用的 IDE 都以某种形式包含这些,通常是通过定义一个您将部署的服务器。 Tomcat 不是一个完全的 EE 容器。它是一个 Servlet 容器,是完整 EE 规范的子集

    As of OSX Lion, Apple doesn't supply a JDK anymore,这只是甲骨文,你显然已经成功收购了。

    【讨论】:

    • 我不明白。如果没有企业版这样的东西,为什么 Oracle 仍然使用这个术语? oracle.com/technetwork/java/javaee/documentation/…
    • 这不像你从某个地方下载“Java EE”。就像您下载了一些实现(GlassFish、JBoss AS、WebSphere、WebLogic 等)并在此服务器上进行开发。
    • 实际上,Java SE 并没有不同。您也不会下载 Java SE,但会下载一个实现。只有 Oracle 的实现获得了如此多的市场份额,以至于它或多或少成为 Java SE 的代名词,但也有 JRockit、MJR、Microsoft 版本(曾经是最著名的版本!),还有 IBM 版本, GCJ(尽管它从来没有真正起作用)和其他一些晦涩的实现。 OpenJDK 是最著名的替代方案,尽管 Oracle 版本现在直接基于此,所以也没有太大区别。
    • 那么,Apple可以提供 EE 的实现而不是 SE(这似乎是它在 Lion 之前所做的)?跨度>
    • 谢谢,您编辑的答案更加清晰了。就个人而言,我发现任何与 Java 名称相关的东西都令人非常困惑(甲骨文的影响?);也许他们应该把它改名为阿司匹林......
    【解决方案2】:

    Java EE 6 是一个规范,其中一些附带的 API 表示为接口。 Java EE 6 本身并不是这些 API 的实现。如果您希望使用 Java EE 6 API,您需要使用兼容的 Java EE Application Server。 Glassfish 是 Java EE 6 的参考实现,但也有其他符合要求的服务器。 JBoss 是另一种流行的选择。

    这些可以在 Mac OS X 上轻松安装。

    【讨论】:

      【解决方案3】:

      有一个 Java EE 下载。 http://www.oracle.com/technetwork/java/javaee/downloads/index.html 就其本身而言,它并不是特别有用,除非您尝试开发一个旨在在多个容器中运行的应用程序。

      您通常想要做的是下载一个容器并使用它进行开发。例如Glassfish(可在上面的同一链接中获得)。借助 Netbeans 等 IDE 的支持,这项任务可以变得更容易。您可以下载已经包含 Glassfish 和 Java EE API 的 Netbeans 版本,然后开始工作。其他 IDE/容器组合是可能的,通常有某种可用的插件。

      用于 OSX 的 Java 6 JDK/JRE 仍然来自 Apple。然而,他们将大部分代码转移到了 Oracle,并且 JDK 7 的 OSX 版本已接近发布状态,它可能已经足够成熟,可以满足您的目的。我最好的猜测是它是。

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-23
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多