我只是在下面运行了脚本,它就将JDK提取并解压缩到正确的位置。问题是每个java命令(复制到 / urs / bin )都会出错。然后,我通过(进入cd我现在在JDK / bin中)进入JDK安装目录进行仔细检查,然后键入:./java -version和get:,./java: No such file or directory但是java在那里!ls -l在JDK上显示所有java客户端都在 bin中 。
java
cd
./java -version
./java: No such file or directory
ls -l
#!/bin/bash #Author: Yucca Nel http://thejarbar.org #Will restart system #Modify these variables as needed... tempWork=/tmp/work locBin=/usr/local/bin javaUsrLib=/usr/lib/jvm sudo mkdir -p $javaUsrLib mkdir -p $tempWork cd $tempWork #Update this line to reflect newer versions of JDK... wget http://download.oracle.com/otn-pub/java/jdk/7u2-b13/jdk-7u2-linux-i586.tar.gz #Extract the download tar -zxvf $tempWork/* #Move it to where it can be found... sudo mv -f $tempWork/jdk1.7* $javaUsrLib/ sudo ln -f -s $javaUsrLib/jdk1.7*/bin/* /usr/bin/ sudo rm -rf $tempWork #Update this line to reflect newer versions of JDK... export JAVA_HOME="$javaUsrLib/jdk1.7.0_02" if ! grep "JAVA_HOME=$javaUsrLib/jdk1.7.0_02" /etc/environment then echo "JAVA_HOME=$javaUsrLib/jdk1.7.0_02"| sudo tee -a /etc/environment fi sudo /sbin/reboot exit 0
跑步ls -l /usr/lib/jvm/jdk1.7.0_02/bin/java给我:yucca@yucca-VirtualBox:~$ -rwxr-xr-x 1 yucca yucca 5654 2011-11-17 22:38 /usr/lib/jvm/jdk1.7.0_02/bin/java
ls -l /usr/lib/jvm/jdk1.7.0_02/bin/java
yucca@yucca-VirtualBox:~$ -rwxr-xr-x 1 yucca yucca 5654 2011-11-17 22:38 /usr/lib/jvm/jdk1.7.0_02/bin/java
还运行了:file /usr/lib/jvm/jdk1.7.0_02/bin输出为:
file /usr/lib/jvm/jdk1.7.0_02/bin
/usr/lib/jvm/jdk1.7.0_02/bin: directory
您正在没有32位运行时环境的64位系统上运行。
假设ubuntu / debian问题:
apt-get install libc6-i386
或者,您应该将软件包的64位版本安装到此VM中(这可能是最好的解决方案)。
错误消息来自运行时链接程序/加载程序。如果您这样做readelf -l java,则会发现类似以下内容的行:
readelf -l java
[Requesting program interpreter: /lib/ld-linux.so.2]
这是您对32位应用程序的期望,并且您可能未安装32位环境-请检查其中的ls -l program interpreter。
program interpreter
和64位程序的示例如下所示(您的系统可能有所不同):
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
如果不是这种情况,并且您确实安装了32位libc,则可以尝试使用ldd java,它将给出类似以下内容的清单:
ldd java
linux-gate.so.1 => (0xf76ef000) libpthread.so.0 => /lib32/libpthread.so.0 (0xf76b3000) libjli.so => /home/bubba/java/jdk1.7.0_02/bin/./../jre/lib/i386/jli/libjli.so (0xf769f000) libdl.so.2 => /lib32/libdl.so.2 (0xf7699000) libc.so.6 => /lib32/libc.so.6 (0xf751f000) /lib/ld-linux.so.2 (0xf76f0000)
如果有not found几行这样说,那么您应该添加提供这些功能的pagkage,但是从中您可以看到,ldd所有依赖项都是核心库,实际上所有Linux系统上都应该存在这些库。
not found
ldd