清单中安装了Java,但执行时会产生"/java:没有这样的文件或目录;

清单中安装了Java,但执行时会产生"/java:没有这样的文件或目录;,java,linux,ubuntu,Java,Linux,Ubuntu,我刚刚运行了下面的脚本,它获取并解压JDK到正确的位置。问题是每个java命令(复制到/urs/bin)都会出错。然后我通过cd(我现在在JDK/bin中)进入JDK安装目录进行双重检查,并键入:/java-version,然后获得:/java:没有这样的文件或目录,但是java在那里ls-l显示所有java客户端都在bin中 运行ls-l/usr/lib/jvm/jdk1.7.0_02/bin/java会给我:yucca@yucca-虚拟箱:~$ -rwxr-xr-x 1尤卡尤卡5654 20

我刚刚运行了下面的脚本,它获取并解压JDK到正确的位置。问题是每个
java
命令(复制到/urs/bin)都会出错。然后我通过
cd
(我现在在JDK/bin中)进入JDK安装目录进行双重检查,并键入:
/java-version
,然后获得:
/java:没有这样的文件或目录
,但是
java
在那里ls-l显示所有
java
客户端都在bin中

运行
ls-l/usr/lib/jvm/jdk1.7.0_02/bin/java
会给我:
yucca@yucca-虚拟箱:~$
-rwxr-xr-x 1尤卡尤卡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

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

假设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位程序的示例如下(您的系统可能会有所不同):

如果不是这种情况,并且您确实安装了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)
如果有行说
找不到
,那么您应该添加pagkages,提供这一点,但正如您从
ldd
中看到的,所有依赖项都是核心库,几乎所有linux系统上都应该存在这些库。

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

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


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

是否重新启动以安装java?这不是“Unix方式”。@MarcB如果用户关闭终端,环境(使用Java)将丢失否?几天前,我的脚本工作正常,当我使用bash-x运行时,我可以看到jdk被完整地解包了……不,
/etc/environment
东西确保JAVA_HOME var将出现在所有新的shell中。我能想到的重新启动的唯一原因是确保当前运行的所有“旧”JVM都被终止。请显示
ls-l java
@ShiDoiSi'的输出yucca@yucca-VirtualBox:~$ls-l/usr/lib/jvm/jdk1.7.0_02/bin/java“Gives:”-rwxr-xr-x 1 YUCA YUCA 5654 2011-11-17 22:38/usr/lib/jvm/jdk1.7.0_02/bin/java“谢谢。这就是发生的事。。。我正在做一系列教程,展示如何设置我的开发环境。我现在注意到我在VirtualBox中使用的Ubuntu版本是AMD 64位,我使用的是英特尔芯片。在此之前,脚本工作正常,但我注意到我昨天做的新来宾来自错误的Ubuntu映像。我遇到了与OP相同的问题,通过运行
apt get install libc6-i386
解决了这个问题。我想知道64位Ubuntu上的32位JDK 7是否还有其他问题?@Petesh也有同样的问题,但使用的是arm cpu。我想知道是否有arm的LIB。@Eugene您在Linux arm平台上?
文件java
报告什么?
readelf-ljava | grep interp
报告了什么?那个翻译存在吗?Android使用不同的解释器
/system/bin/linker
,如果您使用的是Android,那么我不知道有用于Android的编译JDK。@Petesh还不是Android。但是JDK7工作得很好。我所要做的就是一个sudo apt安装libc6-*(大约40MB)
 [Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
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)