Java安装在列表中,但执行产生“./java:没有这样的文件或目录”

我刚刚运行了下面的脚本,它将JDK提取并解压到正确的位置。 问题是,每个java命令(如复制到/ urs /斌 )给出了错误。 然后我通过cd进入JDK安装目录(我现在在JDK / bin中)并且键入: ./java -version和get: ./java: No such file or directory ,但是java在那里! JDK上的ls -l显示所有java客户端都在bin中

 #!/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

还运行: file /usr/lib/jvm/jdk1.7.0_02/bin ,输出为:

 /usr/lib/jvm/jdk1.7.0_02/bin: directory 

Solutions Collecting From Web of "Java安装在列表中,但执行产生“./java:没有这样的文件或目录”"

您正在运行一个没有32位运行环境的64位系统。

假设ubuntu / debian的问题:

 apt-get install libc6-i386 

或者你应该将64位版本的软件包安装到这个虚拟机(这可能是最好的解决方案)。

错误消息来自运行时链接器/加载程序。 如果你做一个readelf -l java你会发现一行:

  [Requesting program interpreter: /lib/ld-linux.so.2] 

你对32位应用程序的期望是什么,你可能没有安装32位环境 – 请检查ls -l该program interpreter

和一个64位程序的例子看起来像(你的系统可能会有所不同):

  [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2] 

如果情况并非如此,并且你已经安装了32位libc,那么你可以尝试一个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那么你应该添加pagkages提供,但正如你可以从这个ldd看到的所有依赖是核心库,应该在几乎所有的Linux系统上存在。

我得到了

bash:/ usr / bin / java:没有这样的文件或目录

问题是我在x86_64 Debian上安装了Java的i586版本。

修复:我删除它并安装Java的x64版本。 现在一切正常。