我正在尝试跟随这有关如何安装适用于 Solaris 10 的 jdk 的说明的网站,其中包含以下信息:
$ isainfo -v
64-bit amd64 applications
ssse3 tscp sse3 sse2 sse fxsr mmx cmov amd_sysc cx8 tsc fpu
32-bit i386 applications
ssse3 tscp sse3 sse2 sse fxsr mmx cmov sep cx8 tsc fpu
当我按照说明输入以下命令 java -version 时,出现错误。
$ java -version
bash: java: command not found
任何人都可以帮忙。谢谢
以下是我已采取的步骤
$ ls -l
total 14
drwxr-xr-x 6 root bin 512 Sep 17 11:17 instances
lrwxrwxrwx 1 root other 7 May 12 14:21 j2sdk1.4.2_34 -> ../j2se
lrwxrwxrwx 1 root other 18 May 12 14:22 jdk1.5.0_32 -> instances/jdk1.5.0
lrwxrwxrwx 1 root other 18 May 12 14:21 jdk1.6.0_37 -> instances/jdk1.6.0
lrwxrwxrwx 1 root root 22 Sep 17 11:20 jdk1.7.0_67 -> instances/jdk1.7.0_67/
lrwxrwxrwx 1 root root 11 Sep 18 09:42 latest -> jdk1.7.0_67
drwxr-xr-x 8 root bin 512 May 12 15:04 packages
$ rm latest
$ ln -s instances/jdk1.7.0_67 jdk1.7.0_67
$ ln -s jdk1.7.0_67 latest
$
$ pwd
/usr/jdk
$
$ cd /usr/
$ ls -ld
drwxr-xr-x 43 root sys 1024 Sep 18 09:45 .
$ ls -ld java
lrwxrwxrwx 1 root root 10 Sep 18 09:43 java -> jdk/latest
$ pwd
/usr
$ rm java
$ ls -ld java
java: No such file or directory
$ ls -ld
drwxr-xr-x 43 root sys 1024 Sep 18 10:24 .
$
$ ln -s jdk/latest java
$ java -version
bash: java: command not found
更新
$ echo $PATH
/usr/sbin:/usr/bin:/usr/java/bin:/usr/ant/apache-ant/bin:/u01/oracle/middleware/wlserver_10.3/common/bin:/opt/CollabNet_Subversion/bin
Error
$ java -version
bash: java: command not found
更新2 省略其他出口输出
$ PATH=$PATH:/usr/jdk/instances/jdk1.7.0_67/bin
$ export path
$ export
declare -x ANT_HOME="/usr/ant/apache-ant"
declare -x HOME="/"
declare -x JAVA_HOME="/usr/java"
declare -x JAVA_OPTS="-Xms512m -Xmx1024m"
declare -x PATH="/usr/sbin:/usr/bin:/usr/java/bin:/usr/ant/apache-ant/bin:/u01/oracle/middleware/wlserver_10.3/common/bin:/opt/CollabNet_Subversion/bin:/usr/jdk/instances/jdk1.7.0_67/bin"
declare -x PWD="/usr/java/bin/amd64"
declare -x SHELL="/bin/bash"
declare -x TERM="xterm"
$ java -version
bash: java: command not found
答案1
这是对你问题的一个复杂的回答,因为我相信你正在创造东西方式比他们需要的更复杂。
我对您的安装有什么问题有一个很好的猜测:参考下面关于 Solaris 上的 64 位 Java 的要点,我猜您做错的是您已经仅有的安装了适用于 Solaris 的 64 位 Java 覆盖包。那是行不通的。
好吧,既然我引起了你的注意(:-)),请原谅我为什么我相信你都走在错误的道路上。
我不确定我是否会关注您提到的那个博客。根据我的经验,Solaris 本身可以启动一个 Java 进程(注册工具后台进程、Web 控制台、通用代理容器等等。确实没有什么重要的,但仍然如此),并且更改系统范围的 Java 可能是一个坏主意..或者至少它让您对每个应用程序的控制更少。简单地离开系统 Java 是一个简单得多方法,恕我直言。
以下是我对如何在 Solaris 上处理 Java 的高度评价的指南:
一般:作为一名系统专业人员,切勿从 java.com。它适用于消费者/台式机。总是使用Oracle Tech Network 站点上的 Java(我仍然使用http://java.sun.com我确信该链接在未来 10 年内将继续有效:-))
不要管系统范围的 Java。让它过自己的生活。
将 Java 包解压到
/opt/java
或/apps/java
或其他东西中。某处你控制,这对你来说感觉很自然。JAVA_ROOT
从现在开始我们就这样称呼吧。当您将这些包解压到
java.sun.com
其中时JAVA_ROOT
,子目录最终将如下所示(示例):
jdk1.7.0_05
jdk1.7.0_09
jdk1.7.0_17
jdk7 -> jdk1.7.0_17
jre -> jre7
jre1.6.0_32
jre1.7.0_05
jre1.7.0_17
jre1.8.0_20
jre6 -> jre1.6.0_32
jre7 -> jre1.7.0_17
jre8 -> jre1.8.0_20
请注意我如何使用符号链接。好吧,你明白了。
当您启动应用程序时,您只需(在该应用程序启动时)将
PATH
指向您想要的 Java。有些应用程序还希望您设置一个JAVA_HOME
变量。现在您可以根据每个应用程序进行控制。如果您在应用程序启动脚本中使用符号链接,您仍然可以在需要时保留一些系统范围的更改能力。如果您的应用程序需要特定版本的 Java,则让它指向特定版本而不是符号链接之一。关于 64 位系统的重要说明:在 Java 7 之前(包括 Java 7),您必须安装二来自 java.sun.com 的软件包相互叠加,因为 64 位支持实际上作为 32 位软件包的覆盖软件包提供。这让大多数人感到困惑,因为它与所有其他操作系统不同。即使您不想使用 32 位 Java,您也首先需要放入 32 位 Java 包,然后用 64 位 Java 包覆盖它。幸运的是,这种情况在 Java 8 中发生了变化,因为 Oracle 不再为 Solaris 提供 32 位 Java。
该解决方案的明显缺点是您将错过使用 Java 软件包管理器的好处。我相信好处远远大于坏处。你自己判断吧。
即使在 Solaris 11(它有一个优秀的软件包管理器)上,我仍然喜欢这个解决方案。
答案2
做
PATH=$PATH:/usr/jdk/instances/jdk1.7.0_67/bin
export PATH
并再试一次。
答案3
在 Solaris 中,该java
命令通常(但并非总是)指的是/usr/bin/java
./usr/bin/java
通常是已安装二进制文件的符号链接java
。
例如,在我的一个 Solaris 系统上:
dev:/ which java
/usr/bin/java
dev:/ ls -l /usr/bin/java
lrwxrwxrwx 1 root other 16 Nov 19 2013 /usr/bin/java -> ../java/bin/java
dev:/
将其作为符号链接可以轻松安装另一个版本的 Java。只需更改/usr/bin/java
新安装版本的java
二进制文件的链接,它将使用新版本。如果您需要恢复到旧版本,可以非常快速地将符号链接更改回之前的值。
如果链接尚不存在,则设置该链接:
ln -s <path to java binary that you wish to use> /usr/bin/java