2012-01-31 1 views
13

私はちょうど以下のスクリプトを実行し、JDKを正しい場所に取り出して解凍します。問題は、すべてjavaコマンド(/urs/binにコピーされたもの)がエラーを起こすことです。私はcd(私は今JDK/binにあります)を使ってJDKのインストールディレクトリに移動し、./java -versionと入力して:./java: No such file or directoryを入力してください。ただしjavaはそこにあります。 JDKのls -lは、すべてjavaクライアントがビンの内部にあることを示しています。 ls -l /usr/lib/jvm/jdk1.7.0_02/bin/javaを実行Javaがリストにインストールされていますが、実行によって "./java:そのようなファイルまたはディレクトリがありません"

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

は私を与える:

[email protected]:~$ -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の出力で:あなたは32ビットのランタイム環境せずに、64ビットシステム上で実行している

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

Javaをインストールするために再起動しますか?それは「Unix Way」ではない。 –

+0

@MarcBユーザーが端末を閉じると、環境(Javaの場合)は失われません。私のスクリプトは数日前に働きました。私がbash -xで動いたときに、jdkが完全に解凍されているのが見えます... – thejartender

+0

いいえ、 '/ etc/environment'は、すべての新しいシェルにJAVA_HOME変数が表示されるようにします。再起動のために私が考えることができる唯一の理由は、現在実行中のjvmsがすべて終了していることを確認することです。 –

答えて

29

と仮定すると、Ubuntuの/ Debianの問題:

apt-get install libc6-i386 

それとも、(おそらく最良の解決策である)、このVMへのパッケージの64ビットバージョンをインストールする必要があります。

エラーメッセージは、実行時のリンカー/ローダーからのものです。あなたがreadelf -l javaを行う場合は次のような行を見つけるでしょう:あなたは32ビットアプリケーションのために期待するものである

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

を、あなたはおそらく32ビット環境がインストールされていない - というのは、ls -lで確認しprogram interpreter

64ビットプログラムは、(お使いのシステムは変更になる場合があります)のようになりますため

と例:

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

これが当てはまらない、とあなたは32ビットのlibcがインストールされているならば、あなたはldd javaを試すことができ、そのそこに行がnot foundを言っている、あなたはそれを提供pagkagesを追加する必要がある場合

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) 

が、あなたはこのlddから見ることができるように、すべての依存関係はpracti上に存在する必要がありますコアライブラリは、以下のとおりです。のようなリストを提供しますcallyすべてのLinuxシステム。/usr/binに/ javaの:

+0

ありがとうございます。これが起こったことです...私は自分の開発環境をどのようにセットアップするかを示す一連のチュートリアルを進行中です。私は今、VirtualBoxでUbuntuを使用しているバージョンがAMD 64ビットであり、Intelチップ上にあることに気付きました。これに先立ってスクリプトは機能しましたが、私は昨日行った新しいゲストが間違ったUbuntuイメージから来たことに気付きました。 – thejartender

+0

私はOPと同じ問題を抱え、 'apt-get install libc6-i386'を実行して解決しました。 64ビットUbuntu上で32ビットJDK 7に追加の問題があるのだろうか? –

+1

@Peteshは同じ問題を抱えていますが、アームCPUを持っています。私は腕のためのライブラリがあるのだろうかと思う。 – Eugene

0

私は

のbashなっていたそのようなファイルやディレクトリ

を問題は、私はx86_64のDebian上でのJavaのi586バージョンをインストールしました。

修正:私はそれを削除し、x64 Javaのバージョンをインストールしました。すべてがうまくいきました。

関連する問題