2012-01-31 30 views
13

Tôi chỉ cần chạy kịch bản dưới đây và rồi nó lấy và giải nén JDK vào đúng vị trí. Vấn đề là mỗi java lệnh (như sao chép vào /urs/bin) cho phép sai sót. Sau đó tôi kiểm tra lại bằng cách vào JDK cài đặt thư mục bằng phương pháp cd (Tôi bây giờ trong JDK/bin) và gõ: ./java -version và nhận được: ./java: No such file or directory, nhưng java là có! ls -l trên JDK cho thấy rằng tất cả java khách hàng là bên trong bin.Java được cài đặt, trong danh sách, nhưng thực hiện sản xuất "./java: Không có tập tin hoặc thư mục"

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

Chạy ls -l /usr/lib/jvm/jdk1.7.0_02/bin/java mang lại cho tôi: [email protected]:~$ -rwxr-xr-x 1 yucca yucca 5654 2011-11-17 22:38 /usr/lib/jvm/jdk1.7.0_02/bin/java

cũng chạy: file /usr/lib/jvm/jdk1.7.0_02/bin với sản lượng:

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

Khởi động lại để cài đặt java? Đó không phải là "Cách Unix". –

+0

@MarcB Nếu người dùng đóng terminal, môi trường (với Java) bị mất không? Kịch bản của tôi đã hoạt động cách đây vài ngày và khi tôi chạy với bash -x, tôi có thể thấy jdk được giải nén đầy đủ ... – thejartender

+0

Không, công cụ '/ etc/environment' đảm bảo rằng biến JAVA_HOME var sẽ hiển thị trong tất cả các shell mới. Lý do duy nhất tôi có thể nghĩ đến để khởi động lại là để đảm bảo rằng tất cả các 'cũ' hiện đang chạy jvms được chấm dứt. –

Trả lời

29

Bạn đang chạy trên một hệ thống 64bit mà không có một môi trường runtime 32bit.

Giả sử ubuntu/debian vấn đề:

apt-get install libc6-i386 

Hoặc bạn nên cài đặt phiên bản 64bit của gói vào VM này (mà có lẽ là giải pháp tốt nhất).

Thông điệp lỗi là đến từ thời gian chạy linker/loader. nếu bạn làm một readelf -l java bạn sẽ tìm thấy một dòng như:

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

Đó là những gì bạn mong đợi cho một ứng dụng 32bit, và có thể bạn không cần phải cài đặt môi trường 32bit - kiểm tra với một -l ls của program interpreter rằng .

và ví dụ cho một chương trình 64bit sẽ trông như thế (hệ thống của bạn có thể thay đổi):

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

Nếu đây không phải là trường hợp, và bạn làm có 32bit libc được cài đặt, bạn có thể thử một ldd java, mà sẽ cung cấp một danh sách như:

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) 

nếu có những dòng nói not found sau đó bạn nên thêm pagkages cung cấp đó, nhưng như bạn có thể nhìn thấy từ ldd này tất cả các phụ thuộc là các thư viện lõi nên được trình bày trên practi cally tất cả các hệ thống linux.

+0

Cảm ơn bạn. Đây là những gì đã xảy ra ... Tôi đang trong quá trình thực hiện một bộ hướng dẫn cho thấy cách tôi thiết lập môi trường phát triển của mình. Bây giờ tôi nhận thấy rằng phiên bản tôi đang sử dụng Ubuntu trong VirtualBox là AMD 64 bit và tôi đang sử dụng chip Intel. Trước khi kịch bản này hoạt động, nhưng tôi nhận thấy khách mới mà tôi đã làm hôm qua là từ hình ảnh Ubuntu sai. – thejartender

+0

Tôi đã gặp vấn đề tương tự như OP và nó đã được giải quyết bằng cách chạy 'apt-get install libc6-i386'. Tôi tự hỏi nếu có thể có vấn đề bổ sung với 32-bit JDK 7 trên Ubuntu 64 bit? –

+1

@Petesh có cùng một vấn đề, nhưng với một cpu cánh tay. Tôi tự hỏi nếu có libs cho cánh tay .. – Eugene

0

tôi đã nhận được

bash:/usr/bin/java: Không có tập tin hoặc thư mục

Vấn đề là tôi đã cài đặt phiên bản i586 của Java trên Debian x86_64.

Việc sửa chữa: Tôi đã gỡ bỏ nó và cài đặt phiên bản x64 của Java. Bây giờ mọi thứ đang làm việc rất ổn định.

Các vấn đề liên quan