如何知道我是否在使用 Java EE?

Fla*_*nix 4 linux java bash eclipse

今天我通过.sh官方 Oracle 源下载文件并使用sudo sh filename.sh命令运行它来安装 Java EE 。

但是,我的 Linux Mint 机器中有多个版本的 Java,我在使用以下命令时可以访问这些版本sudo update-alternatives --config java

There are 2 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
  0            /usr/lib/jvm/java-7-oracle/jre/bin/java          1074      auto mode
  1            /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java   1071      manual mode
* 2            /usr/lib/jvm/java-7-oracle/jre/bin/java          1074      manual mode

Press enter to keep the current choice[*], or type selection number: 
Run Code Online (Sandbox Code Playgroud)

当我使用java -version命令时,这就是我得到的:

$ java -version
java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)
Run Code Online (Sandbox Code Playgroud)

通过阅读所有这些输出,我从未发现任何提及任何“Java EE”版本的内容。所以我有一些问题需要澄清:

  1. 我怎么知道我是否将其用作默认设置?
  2. 如果默认情况下我不使用它,我该怎么做?
  3. 如果上述步骤不可行,我该如何设置我的 Eclipse IDE 来使用它?

提前致谢,佩德罗。

Ken*_*Ken 6

Java EE 实际上是一堆.jar运行在 Java SE 之上的企业库(在文件中),通常在服务器中。所以java -version它本身只是说“SE”。它还说“服务器虚拟机”,它是为运行服务器而调整的;但它是 64 位 Linux 上所有东西的默认 VM。(您在启动时配置或覆盖 VM 选择。VM 不“知道它正在运行哪种类型”的应用程序,因此它不会为您选择。)

您链接的 Java EE 安装了 Glassfish 服务器;那个特定的包有它自己的 JDK —— 实际上是一个旧的。所以无论你把它放在哪里,如果你去glassfish3/jdk7目录运行bin/java -version,它会报告java version "1.7.0_10",而不是_45。请注意,“核心”运行时在jdk7/jre/lib/rt.jar

EE JAR 在glassfish3/glassfish/modules. 主要的名称以“javax”开头,因此您可以看到它们find . -name 'javax*.jar'

当您在 Glassfish 中运行应用程序时,它应该执行类路径魔术以使这些 JAR 可用。如果您使用的是 IDE,它应该执行类似的操作,以便您可以编译代码。如果您手动编程,则必须自己进行。

因此,要回答您的问题,不使用 SE 就没有“使用”EE。使用 EE 的唯一真正要求是将其 JAR 放在类路径上。Eclipse 应该有办法“指向 Glassfish”并让它找到一切。

在这种特殊情况下,您还应该删除旧的_10JDK。然后要么把你的现有_45放在它的位置glassfish3/jdk7; 或者对 PATH、JAVA_HOMEglassfish3/glassfish/config/asenv.conf等进行任何必要的更改以使其运行。您不想意外运行旧的 JDK。


Arn*_*rne 1

您只需要了解 HotSpot,因为它是来自 Oracle 的 JVM。所以从现在开始所有使用java命令的程序$PATH都将使用Oracle的Java。您还应该javac调整update alternatives.

  1. 有些程序有其他方法来查找 Java,因此请发挥创意。
  2. 取决于应用程序
  3. 抱歉我没有使用 Eclipse