OS X 10.8.2 এ আমি জাভা 7 এবং জাভা 6 এর মধ্যে কীভাবে স্যুইচ করব?


84

আমি উইন্ডোজ এবং ম্যাকের জন্য সহজ গেমগুলি প্রোগ্রাম করার জন্য জাভা এসই 7 ব্যবহার করছি তবে আমার কম্পিউটারে মিনক্রাফ্টের মতো গেমগুলি চালাতে আমাকে জাভা 6 এ যেতে হবে। আমি ম্যাক ওএস এক্স 10.8.2 বিল্ড 12 সি 60 এ আপডেট করার আগে এটি ঠিক কাজ করত।

এই আপডেটের আগে আমি জাভা পছন্দগুলি খুলতে এবং জাভা 6 বা জাভা 7 চেক করতে সক্ষম হয়েছি তবে এখন আমি জাভা পছন্দগুলি সন্ধান করতে সক্ষম হবে বলে মনে হয় না।

আমি OS X 10.8.2 (সর্বশেষ সংস্করণ) চালাচ্ছি।


3
আপনি সঠিক, জাভা পছন্দগুলি এখন শেষ আপডেটের সাথে সরানো হয়েছে। আমি চেষ্টা করেছি এমন কয়েকটি শেল পদ্ধতি কার্যকর হচ্ছে না, তবে আপনি যখন সর্বাধিক সাম্প্রতিক 7 চালাচ্ছেন তখন এটির সুবিধার জন্য কিছু ব্যবস্থা থাকতে হবে।

উত্তর:


41

আমি মনে করি না যে এখানে জেআরই (রানটাইম পরিবেশ) স্যুইচ করা সম্ভব:

http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jre.html

কোন প্রদেশ:

কেবল একটি জেআরই ইনস্টল করা যায়। একটি জেআরই ইনস্টল করা পূর্বে ইনস্টল করা জেআরই সরিয়ে দেয়। সিস্টেম দ্বারা ব্যবহৃত জেআরই সংস্করণ দুটি উপায়ের একটিতে নির্ধারণ করা যেতে পারে:

কার্যসংক্রান্ত:

আমার যেমন একই সমস্যা ছিল তেমনি আপনার সাথে উওলার সাথে মাইনক্রাফ্ট রয়েছে। যেখানে আমার জাভা 1.6 ব্যবহার করে উয়ালাকে চালানো দরকার ছিল যেখানে আমার জেডিকে 1.7 দিয়ে বিকাশ করা দরকার ছিল এবং আমি এটি Wuala.app প্যাকেজটি খোলার মাধ্যমে এবং এর স্টার্টআপ স্ক্রিপ্ট পরিবর্তন করে পরিচালনা করেছি:

/Applications/Wuala.app/Contents/MacOS/wuala

থেকে:

exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*

প্রতি:

/usr/libexec/java_home -v 1.6.0 --exec java ${VMARGS} -cp "${JAR_DIR}/loader3.jar":/System/Library/Java/ com.wuala.loader3.Loader3 -alternateprogrampath "${JAR_DIR}" -installed $*

অর্থাৎ কেবল প্রতিস্থাপন: এর execসাথে:/usr/libexec/java_home -v 1.6.0 --exec

এটি অবশ্যই জড়িত এবং প্রতিবার ওয়ালা অটোপেটগুলি ভেঙে যাবে তবে অন্যথায় এটি কার্যকর হয়।

অন্য জেডিকে ব্যবহার করতে এখানে দেখুন:

http://docs.oracle.com/javase/7/docs/webnotes/install/mac/mac-jdk.html

কোন প্রদেশ:

জাভার ভিন্ন সংস্করণটি চালনার জন্য, পুরো পথটি নির্দিষ্ট করুন বা জাভা_হোম সরঞ্জামটি ব্যবহার করুন: /usr/libexec/java_home -v 1.7.0_06 --exec javac -version

এখানে আমার সেটআপের একটি চিত্র এবং উদাহরণ রয়েছে:

ওরাকল জেডিকে ইনস্টল করে:

odin:~ geff$ ls -al /Library/Java/JavaVirtualMachines 
total 0
21058660 0 drwxr-xr-x  3 root  wheel  - 102 24 Oct 18:04:33 2012 jdk1.7.0_09.jdk/
21061692 0 drwxr-xr-x  3 root  wheel  - 102 24 Oct 18:06:08 2012 jdk1.7.0_07.jdk/
21042328 0 drwxrwxr-x  3 root  wheel  - 102 20 Apr 06:58:53 2012 1.7.0.jdk/
21031664 0 drwxrwxr-x  7 root  admin  - 238 24 Oct 18:04:16 2012 ../
21042327 0 drwxr-xr-x  5 root  wheel  - 170 24 Oct 18:06:13 2012 ./

অ্যাপল জেডিকে সরবরাহ করেছে:

odin:~ geff$ ls -al /System/Library/Java/JavaVirtualMachines 
total 0
21026468 0 drwxr-xr-x  3 root  wheel  - 102  1 Nov 17:49:02 2011 1.6.0.jdk/
21026436 0 drwxr-xr-x  6 root  wheel  - 204 24 Mar 23:04:06 2012 ../
21026467 0 drwxr-xr-x  3 root  wheel  - 102  1 Nov 17:49:02 2011 ./

এটি অ্যাপল সরবরাহিত 1.6 জেডিকে ব্যবহার করার জন্যও আমার পক্ষে কাজ করে

odin:~ geff$ /usr/libexec/java_home -v 1.6.0_37 --exec java -version
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)

1.7 ওরাকল সংস্করণগুলির মধ্যে চয়ন করুন:

প্রথম ওরাকল জেডিকে 1.7.0_04 নির্বাচন করা হচ্ছে

odin:~ geff$ /usr/libexec/java_home -v 1.7.0_04 --exec java -version
java version "1.7.0_04"
Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)

জেডিকে 1.7.0_07 নির্বাচন করা হচ্ছে

odin:~ geff$ /usr/libexec/java_home -v 1.7.0_07 --exec java -version
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

ডিফল্ট জেডিকে সর্বোচ্চ:

odin:~ geff$ java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

কেবলমাত্র ছোটখাটো সংস্করণ নম্বর ব্যবহার করার সময় সর্বোচ্চ "প্যাচ স্তরে ডিফল্ট:

odin:~ geff$ /usr/libexec/java_home -v 1.7.0 --exec java -version
java version "1.7.0_09"
Java(TM) SE Runtime Environment (build 1.7.0_09-b05)
Java HotSpot(TM) 64-Bit Server VM (build 23.5-b02, mixed mode)

98

java_homeযেকোন একটি আরও সুবিধাজনকভাবে প্রক্রিয়া ব্যবহার করতে পারেন ।

বলুন আপনার জাভা 7 ডিফল্ট হিসাবে রয়েছে:

$ java -version
java version "1.7.0_15" 
…

এখন জাভা 6 সক্রিয় করা যাক:

$export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)

এবং এটি এখানে:

$ java -version
java version "1.6.0_41"
…

.bashrcজিনিসগুলিকে আরও সুবিধাজনক করার জন্য আমি এগুলিকে আমার সাথে যুক্ত করেছি :

alias java_ls='/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

function java_use() {
    export JAVA_HOME=$(/usr/libexec/java_home -v $1)
    export PATH=$JAVA_HOME/bin:$PATH
    java -version
}

java_lsjava_home -Vকেবলমাত্র সংস্করণ সংখ্যাগুলিতে আউটপুট হ্রাস করে । এবং java_useআমরা উপরে যা করেছি তার জন্য কেবল একটি শর্টকাট। যেমন java_use 1.6জাভা 6 এ স্যুইচ করবে।


3
জাভা_সে আপনার আগের জবা $ PATH থেকে মুছে ফেলা উচিত।
ইয়ার নিম

@ ইয়ারনিম @ কীভাবে এটি করবেন?
ম্যালকম


জাভা_উজ আপডেট করুন যা আমার জন্য কাজ করেছে: ফাংশন জাভা_উস () {রফতানি করুন জাভাহোম = $ (/ ইউএসআর / লিবেক্সেক / জাভা_হোম-ভি $ 1) এক্সপোর্ট প্যাট = echo $PATH | awk -v RS=: -v ORS=: '/Library\/Java\/JavaVirtualMachines/ {next} {print}'| sed 's/:$//' এক্সপোর্ট প্যাথ = $ জাভাহোম / বিন: AT প্যাট জাভা-রূপান্তর}
নিতিন মাহেশ

35

সহজেই জেডিকে (জেআরই সম্পর্কে নিশ্চিত নয়) ( উত্স ) স্যুইচিংয়ের একটি সমাধান :

function setjdk() {  
  if [ $# -ne 0 ]; then  
   removeFromPath '/System/Library/Frameworks/JavaVM.framework/Home/bin'  
   if [ -n "${JAVA_HOME+x}" ]; then  
    removeFromPath $JAVA_HOME  
   fi  
   export JAVA_HOME=`/usr/libexec/java_home -v $@`  
   export PATH=$JAVA_HOME/bin:$PATH  
  fi  
  echo JAVA_HOME set to $JAVA_HOME  
  java -version  
 }  
 function removeFromPath() {  
  export PATH=$(echo $PATH | sed -E -e "s;:$1;;" -e "s;$1:?;;")  
 }

(উপরের ফাংশনটি আপনার যুক্ত করুন .bash_profile)

ব্যবহার:

$ setjdk 1.7

7

পুরানো জাভা 6 বাইনারিতে একটি সিমলিংক তৈরি করা একটি দ্রুত কাজ

sudo ln -s /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Commands/java /usr/local/bin/java6

তারপরে অ্যাপ্লিকেশনগুলি চালাও: java6 -jar myapp.jar


3

জাভা অগ্রাধিকার অ্যাপ্লিকেশনটি জাভা 1.6 টি আর তালিকাভুক্ত করবে না। তবে আমি যখন কমান্ড লাইনে জাভা সংস্করণটি পরীক্ষা করি তখন আমি পাই:

java -version                                            
java version "1.6.0_37"
Java(TM) SE Runtime Environment (build 1.6.0_37-b06-434-11M3909)
Java HotSpot(TM) 64-Bit Server VM (build 20.12-b01-434, mixed mode)

3

OS জাভাহোম ভেরিয়েবল পরিবর্তন করার প্রয়োজন ছাড়াই ওএস এক্স-তে তাত্ক্ষণিকভাবে জাভা সংস্করণগুলি স্যুইচ করা বেশ সহজ।

আমি ১০.৮.২ চালাচ্ছি এবং আমার $ জাভাআহোম ভেরিয়েবলটি / লাইব্রেরি / জাভা / হোমকে দেখায়

echo $JAVA_HOME

এই পাথটি একটি প্রতীকী লিঙ্ক, যেমন ls -l কমান্ড চালিয়ে দেখা যায়

ls -la /Library/Java

ডিফল্ট প্রতীকী লিঙ্কটি নির্দেশ করে

হোম -> / লাইব্রেরি / জাভা / জাভা ভার্চুয়ালম্যাচাইনস / ১.০.০.২০১৩-b03-424.jdk/ বিষয়বস্তু / হোম /

জাভাটি আমার ১.7 ইনস্টলেশনে পুনর্নির্দেশ করতে, আমি কেবল পুরানো হোম সিমলিংকটি আমার জাভা ১.7 ইনস্টলেশনের হোম ডিরেক্টরিতে নির্দেশ করে একটি নতুন সিমলিংক দিয়ে প্রতিস্থাপন করেছি।

cd /Library/Java
mv Home Home-1.6
ln -s /Library/Java/JavaVirtualMachines/jdk1.7.0_21.jdk/Contents/Home/ Home

ও ভয়েলা! java -version দেখায় যে আমি এখন জাভা ১.7 চালাচ্ছি। তাত্ক্ষণিকভাবে ডিফল্ট জাভা জেআরই পরিবর্তন করতে কোন সিমলিংকে বর্তমানে 'হোম' নামকরণ করা হয়েছে তা স্যুইচ করুন।


3

এখানে জাভা 6 এবং ম্যাক অসক্সে জাভা 7 স্যুইচ করার একটি সহজ উপায়।

পদক্ষেপ 1: ওডাকল অফিসিয়াল ওয়েবসাইট http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html থেকে jdk 7 ডাউনলোড করুন এবং টিপস অনুসরণ করে ধাপে এটি ইনস্টল করুন

পদক্ষেপ 2: .বাশ_প্রফাইলে $ জাভাহোম সেট করুন

$ vim .bash_profile 

export JAVA_HOME=$(/usr/libexec/java_home)

$ source .bash_profile

$ echo $JAVA_HOME
/Library/Java/JavaVirtualMachines/1.7.0.jdk/Contents/Home

পদক্ষেপ 3: আপনি jdk 6 ব্যবহার করতে চান, ঠিক বিকল্প $ JAVA_Home থেকে jdk 6 হোম পাথ

$ vim .bash_profile 

export JAVA_HOME=$(/usr/libexec/java_home -v 1.6)

$ source .bash_profile

$ echo $JAVA_HOME
/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home

3

আপনার জাভা পরিবেশটি পরিচালনা করুন (ম্যাক এবং লিনাক্সে): http://www.jenv.be/

রুবি এবং আর নোডের জন্য আরভিএমের মতো তবে জাভার জন্য।


2

উপরোক্ত এবং কিছু অন্যান্য গবেষণার ভিত্তিতে আমি একটি স্ক্রিপ্ট তৈরি করেছি যা আপনি আপনার প্রোফাইলে "উত্স" (বা "ডট") করতে পারেন। এটি আপনাকে আপনার ম্যাকের উপলভ্য জাভাওয়াহোমগুলি মেনু দিয়ে প্রম্পট করবে, যদিও আপনি ডিফল্ট হোমও নির্দিষ্ট করতে পারেন বা একটি মেনু পছন্দ প্রাক-নির্বাচন করতে পারেন।

আমার মধ্যে .bash_profile:

export PREJAVA_PATH="$PATH:~/bin"
export PATH="${PREJAVA_PATH}"
. gojava -d

নোট করুন এটি একটি পরিবর্তনশীল প্রয়োজন PREJAVA_PATH। আপনি এটিকে কমান্ড লাইন থেকেও কল করতে পারেন:

$ . gojava

অথবা দ্বিতীয় বিকল্পটি প্রাক-চয়ন করতে:

$ . gojava -c 2

ফাইলটি gojavaহ'ল:

#!/bin/bash

_exe=/usr/libexec/java_home
_defaultHome=$($_exe)

usage() {
cat <<EOF
$0 [-d] [-c menu_choice]

Sets JAVA_HOME and PATH variables based on a user choice from a menu of available JDKs.

Parameters:

  -d : use system default ($_defaultHome)
  -c : specify a menu choice in advance, without being prompted

Note that environment variable PREJAVA_PATH must be set, and should include the PATH that 
you want with everything but JAVA_HOME/bin.

EOF
exit 1
}

setHomePath() {
  export JAVA_HOME="$1"
  export PATH="${JAVA_HOME}/bin":"${PREPATH}"
}

# TODO: [enhancement] figure out a better way to determine a PATH that excludes the JAVA_HOME
if [ -z "${PREJAVA_PATH}" ]; then
  usage  
else
  PREPATH=${PREJAVA_PATH}
fi

_default=0
_choice=0
OPTIND=1
while getopts "dc:" name; do
 case $name in
      d) _default=1 ;;
      c) _choice="$OPTARG" ;;
      *) echo "unknown parameter $name"
         usage
         ;;
 esac
done

if [ $_default -eq 1 ]; then
  setHomePath "$_defaultHome"
else
  i=1
  while read -r line; do
    choiceList[$i]="$line"
    homeList[$i]=$(echo $line | sed 's/[^\/]*\(\/.*\)/\1/')
    i=$(($i+1))
  done < <($_exe -V 2>&1 | egrep -v '^$|^\/|^Matching')

  if [ $_choice -gt 0 -a $_choice -lt $i ]; then
    setHomePath "${homeList[$_choice]}"
  else
    printf "\nList of available Java versions:\n"
    select choice in "${choiceList[@]}"; do
      if [ $REPLY -gt 0 -a $REPLY -lt $i ]; then
        setHomePath "${homeList[$REPLY]}"
        break
      fi
    done
  fi
fi

0

@ আলেক্স উত্তরের ফিশ শেল সংস্করণ (যুক্ত করুন ~/config/fish/config.fish):

alias java_ls '/usr/libexec/java_home -V 2>&1 | grep -E "\d.\d.\d[,_]" | cut -d , -f 1 | colrm 1 4 | grep -v Home'

function java_use
    set JAVA_HOME (/usr/libexec/java_home -v $argv)
    set PATH $JAVA_HOME/bin $PATH
    java -version
end
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.