the*_*der 16 java linux ubuntu
我刚刚运行了下面的脚本,它将JDK取出并解压缩到正确的位置.问题是每个java
命令(复制到/ urs/bin)都会出错.然后我通过cd
(我现在在JDK/bin中)进入JDK安装目录并输入:./java -version
并获取:./java: No such file or directory
,但是java
在那里进行双重检查!ls -l
在JDK上显示所有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
Run Code Online (Sandbox Code Playgroud)
跑步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
Run Code Online (Sandbox Code Playgroud)
Pet*_*esh 35
您运行在没有32位运行时环境的64位系统上.
假设ubuntu/debian问题:
apt-get install libc6-i386
Run Code Online (Sandbox Code Playgroud)
或者您应该将64位版本的软件包安装到此VM中(这可能是最佳解决方案).
错误消息来自运行时链接程序/加载程序.如果你这样做,readelf -l java
你会发现如下行:
[Requesting program interpreter: /lib/ld-linux.so.2]
Run Code Online (Sandbox Code Playgroud)
您对32位应用程序的期望是什么,并且您可能没有安装32位环境 - 请查看ls -l program interpreter
.
64位程序的示例看起来像(您的系统可能会有所不同):
[Requesting program interpreter: /lib64/ld-linux-x86-64.so.2]
Run Code Online (Sandbox Code Playgroud)
如果不是这种情况,并且你确实安装了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)
Run Code Online (Sandbox Code Playgroud)
如果有线说,not found
那么你应该添加提供它的pagkages,但正如你可以从中看到的,ldd
所有的依赖关系都是应该存在于几乎所有Linux系统上的核心库.
归档时间: |
|
查看次数: |
19092 次 |
最近记录: |