สลับรุ่น Java ชั่วคราวใน bash script- Ubuntu Linux


0

ฉันใช้ Java keytool เป็นส่วนหนึ่งของสคริปต์ทุบตีที่ใหญ่ขึ้น ฉันต้องส่งรหัสผ่านเพื่อสร้างที่เก็บคีย์ดังนั้นให้ใช้คำสั่ง keytool -importkeystore -deststorepass:file ${somefile}.

นี้ -deststorepass:file มีเฉพาะใน Java 7 เท่านั้นตามเอกสาร http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/keytool.html http://docs.oracle.com/javase/7/docs/technotes/tools/solaris/keytool.html

ฉันเคยใช้งานสคริปต์มาก่อน แต่ฉันคิดว่าในเครื่องนี้ค่าเริ่มต้นของ Java ต้องเป็น Java 6 และฉันไม่แน่ใจว่าฉันมั่นใจ update-alternatives -config java ถือได้ว่ามีเสถียรภาพ

ใครบ้างโปรดทราบวิธีการตั้งค่าเวอร์ชัน Java สำหรับสคริปต์เฉพาะสำหรับสภาพแวดล้อม linux ฉันเห็นสิ่งนี้ แต่ฉันแปลมันเป็น Linux ไม่ได้ สลับระหว่าง Java 7 และ 8 ใน OS X

ขอบคุณ!

คำตอบ:


0

ฉันเดาว่าความต้องการของคุณไม่ได้เป็นการเปลี่ยนเครื่องเสมือน Java เริ่มต้นทั่วทั้งระบบชั่วคราวซึ่งอาจมีผลข้างเคียงที่ไม่คาดคิดสำหรับแอปพลิเคชันอื่น แต่เพียงเพื่อค้นหาเครื่องที่เหมาะกับวัตถุประสงค์ของคุณ

สมมติว่า JVM ของคุณติดตั้งในไดเรกทอรีที่ไม่มีช่องว่าง (สมมติฐานง่าย ๆ ใน distros มาตรฐาน):

# wantedArg is the argument that we need 
function getSuitableAlternative() {
  cmd=$1
  wantedArg=$2
  JVM_LIST=$(update-alternatives --list $cmd) 

  # Try all available JVMs until we find one supporting the specified parameter
  for jvm in $JVM_LIST 
  do
    $jvm -help |grep -q -- -$wantedArg && { echo $jvm; break; }
  done
}

# Find a "java" command supporting "deststorepass" argument
suitableJvm=$(getSuitableAlternative java deststorepass)

# Bad luck. 
if [ "$suitableJvm" == "" ]
then 
  echo "No suitable JVM machine found" >&2
  echo "Please sudo apt-get install jdk7..." >&2
  exit 1 
fi

$suitableJvm <...>
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.