gpt4 book ai didi

Java 已安装,在 list 中,但执行产生 "./java: No such file or directory"

转载 作者:IT王子 更新时间:2023-10-29 00:22:27 25 4
gpt4 key购买 nike

我刚刚运行了下面的脚本,它获取 JDK 并将其解压缩到正确的位置。问题是每个 java 命令(复制到 /urs/bin)都会出错。然后,我通过 cd 进入 JDK 安装目录(我现在在 JDK/bin 中)并键入:./java -version 并得到:./java: 没有这样的文件或目录,但是 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 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

最佳答案

您在没有 32 位运行时环境的 64 位系统上运行。

假设 ubuntu/debian 问题:

apt-get install libc6-i386

或者您应该将 64 位版本的软件包安装到此 VM 中(这可能是最佳解决方案)。

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

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

这是您对 32 位应用程序的期望,并且您可能没有安装 32 位环境 - 检查该程序解释器的 ls -l。

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 系统上。

关于Java 已安装,在 list 中,但执行产生 "./java: No such file or directory",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9081962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com