2013-04-26 11 views
6

मैं कई JDK मेरी Linux मशीन पर स्थापित किया करते थे, और मैं एक संस्करण से कमांड लाइन से दूसरे में स्विच करना चाहते (मैं अपने JAVA_HOME मैन्युअल रूप से बदलना करने के लिए इस्तेमाल):क्या कोई जावा संस्करण प्रबंधक है?

यह मेरा वर्तमान दृष्टिकोण है:

I source.bashrc में ~/.paths

.paths में मेरी मशीन पर सभी JDK इंस्टॉल हैं।

JDK7="~/local/jdk1.7.0_15" 
JDK8="~/local/jdk1.8.0" 
// I use Jdk 7 by default 
JDK_HOME=$JDK7;  
// including $JDK_HOME/bin to the $PATH 

जब मैं टी JDK8 करने के लिए स्विच करना चाहते हैं, मैं फ़ाइल में JDK8 पर बात करने के लिए JDK_HOME चर संशोधित, और मैं अपने .paths फ़ाइल re-source

मुझे पता है कि IDE कई JDK आसानी से प्रबंधित कर सकता है, लेकिन मुझे समाधान की तरह rvm चाहिए।

  • क्या कोई बेहतर चाल है?
  • बेहतर, क्या जावा में rvm के लिए कोई समतुल्य है?
+0

[जेवीएम संस्करण प्रबंधक] के संभावित डुप्लिकेट (http://stackoverflow.com/questions/2463936/jvm-version-manager) –

उत्तर

3

jdk_switcher है हालांकि यह ubuntu पथों के लिए काफी स्थिर है - इसे अन्य पथों से चलाने के लिए इसे संशोधित करना आसान होना चाहिए।

RVM 2 को Ruby संस्करणों को और अधिक स्विच करने के लिए एक योजना है, तो आप here के बारे में अधिक पढ़ सकते हैं।

लिंक वाला कोई भी व्यक्ति टिप्पणी कर सकता है।

+0

'RVM2' योजना का वादा करने के लिए धन्यवाद, धन्यवाद @mpapis धन्यवाद। – tarrsalah

0

आपके पास जितने चाहें उतने जावा संस्करण स्थापित हो सकते हैं। बस अपने चयन के एक फ़ोल्डर में स्थापित करें और कुछ सम्मेलन का उपयोग करें।

आप बनाना चाहते हैं (उदाहरण के लिए) एक पूर्ण पथ के साथ इसे चलाने के एक विशेष संस्करण की एक बार उपयोग:

>C:\java\jdk-6u35\bin\java.exe 

या

>/java/jdk-6u35/bin/java.exe 

तुम सिर्फ करने के लिए बदलना चाहते हैं इसका उपयोग करें, जिस संस्करण को आप चाहते हैं उसे रखने के लिए अपना रास्ता बदलें। पथ ऊपर दिखाए गए जैसा ही हो सकता है।

जावा स्थान के संदर्भ में जावा और एचओएमईई और किसी भी अन्य पर्यावरण सेटिंग्स को बदलने के लिए सुनिश्चित रहें।

ध्यान दें कि कुछ औजारों में आंतरिक कॉन्फ़िगरेशन है जिसके लिए जावा संस्करण का उपयोग करना है। ग्रहण एक अच्छा उदाहरण है। आपको अपने जेवीएम की एक सूची स्थापित करनी है और फिर प्रत्येक परियोजना के लिए या सभी परियोजनाओं के लिए एक का चयन करना होगा।

1

मुझे नहीं लगता कि ऐसा समाधान है। इस question को सिम्लिंक के साथ समाधान में देखें।

0

अब, मैं jdk-manager का उपयोग कर रहा हूं, एकाधिक JDKS इंस्टॉलेशन प्रबंधित करने के लिए एक छोटी बैश स्क्रिप्ट का उपयोग कर रहा हूं।

0

मैं जावा संस्करणों का प्रबंधन करने के अपने ही पटकथा लिखी। मैं उन साइटों का उपयोग करता हूं जिनके लिए ओरेकल जावा और आमतौर पर नवीनतम संस्करण की आवश्यकता होती है, इसलिए मैं एपीटी/योग्यता का उपयोग नहीं कर सकता और इसलिए अद्यतन-विकल्प या जेडीके-मैनेजर (जो अद्यतन-विकल्प का उपयोग करता है) का उपयोग नहीं कर सकता।

यहां मेरी लिपि है। मैं व्यावसायिक रूप से विकसित नहीं होता, इसलिए यह शायद एक गड़बड़ है, लेकिन यह मेरे उद्देश्यों को पूरा करता है। यह केवल जावा संस्करणों को/usr/lib/jvm में संग्रहीत करता है।

#!/bin/bash 

# the proper way.... 
# + update: update-alternatives only works for versions installed by apt or aptitude 
# ... same for jdk-manager (uses update-alternatives to do the heavy lifting) 
#echo "The proper way is:" 
#echo "$ update-alternatives --config java" 

#exit 

# the rest is (no longer) depreciated.... 

echo "The current default java is $(readlink --canonicalize `which java`)" 

PS3='Select Java to install: ' 
options=($(find /usr/lib/jvm -iname java)) 
noptions=${#options[@]} 
((loption=noptions-1)) 
options[${#options[@]}]="Quit" 

select opt in "${options[@]}" 
do 
    for i in $(seq 0 $loption); do 
    [ "$opt" == "${options[$i]}" ] && \ 
     javapath=${options[$i]} 
    done 
    if [ "$javapath" ]; then 
    break 
    fi 
    if [ "$opt" == "Quit" ]; then 
     echo "Nothing installed."; 
     exit 
    else 
     echo "Invalid option. Try another one."; 
     continue 
    fi 
done 


# remove the old link (might be superfluous) 
#rm -vf -- "$link" 

# set new link (symbolic, force, verbose) 
sudo ln -sTfv "$javapath" "/usr/bin/java" 

default_java_dir=$(echo "$javapath" | grep --only-matching --regexp="\/usr\/lib\/jvm\/[^\/]*") 
sudo ln -sTfv "$default_java_dir" "/usr/lib/jvm/default-java" 

java_bin_dir=$(echo "$javapath" | sed 's/[^\/]*$//') 
echo $java_bin_dir 
[ -f "${java_bin_dir}javac" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javac" 
[ -f "${java_bin_dir}javadoc" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javadoc" 
[ -f "${java_bin_dir}javafxpackager" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javafxpackager" 
[ -f "${java_bin_dir}javah" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javah" 
[ -f "${java_bin_dir}javap" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javap" 
[ -f "${java_bin_dir}java-rmi.cgi" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}java-rmi.cgi" 
[ -f "${java_bin_dir}java_vm" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}java_vm" 
[ -f "${java_bin_dir}javaws" ] && sudo ln -sfv -t "/usr/bin" "${java_bin_dir}javaws" 

find_dir=$(dirname "$java_bin_dir") 
pluginpath=$(find "$find_dir" -name libnpjp2.so) 

#exit 

echo -n "Install $pluginpath as the Java plugin? [y/N]: " 
read 
response=$(echo $REPLY | sed 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/') 

if [ "${response:0:1}" == "Y" ]; then 

    # directories for plugins 

    plugin_dirs="/usr/lib/firefox/plugins 
        /usr/lib/firefox-addons/plugins 
        /usr/lib/mozilla/plugins 
        /opt/google/chrome 
        /home/james/.mozilla/plugins" 


    # first, clean out anything we might have improperly installed already 
    echo "Using 'sudo' to remove any installed java plugins..." 

    for pdir in $plugin_dirs; do 
    sudo rm --verbose --force "$pdir/libjavaplugin_oji.so" "$pdir/libnpjp2.so" "$pdir/IcedTeaPlugin.so" 
    done 

    # okay, trying brute force and awkwardness.... 
    echo "Using 'sudo' to install \"$pluginpath\" in several places..." 

    for pdir in $plugin_dirs; do 
    sudo ln --symbolic --verbose --force "$pluginpath" "$pdir" 
    done 
fi 

exit 
0

आप डेबियन या एक व्युत्पन्न जीएनयू/लिनक्स वितरण का उपयोग करते हैं, तो आप स्थापित करने के लिए जो वर्तमान में रन किया जा रहा है जब आप जावा टाइप अद्यतन विकल्प का उपयोग कर सकते हैं।

कोशिश

update-alternatives --display java 

कि आपको बताएंगे कि क्या विकल्प उपलब्ध है टाइपिंग। यह आदेश विनाशकारी है, यानी, यह कुछ भी नहीं बदलता है।

man update-alternatives 

आप उपकरण के लिए मैनुअल देंगे। आदेश आप की संभावना है, हालांकि चाहते हैं जाएगा:

update-alternatives --config java 

जो तुम जावा कार्यक्रम स्थापित करने का एक सरल, इंटरैक्टिव तरीका दे देंगे। यदि आप इसे स्क्रिप्ट करना चाहते हैं तो आपसेट का भी उपयोग कर सकते हैं।

बेशक

, तुम मेरे आदमी पहले चलने के बिना पर भरोसा नहीं करना चाहिए, क्योंकि लोगों को कभी कभी इंटरनेट पर जाने के लिए और झूठ बोलते हैं। ;)

संपादित करें: मैं भूल गया, this link का परिचय एक अच्छा में अद्यतन-विकल्प (यदि Vi विशिष्ट) जिस तरह से।

0

लिनक्स के लिए, आप अद्यतन-विकल्प का उपयोग न केवल जावा, javac, और अन्य बाइनरी लेकिन यह भी अपने JAVA_HOME पथ सेट करने के लिए कर सकते हैं। चूंकि यह सब लिंक प्रबंधित करता है, इसलिए आप अपनी जेडीके निर्देशिकाओं के लिए एक लिंक स्थापित कर सकते हैं और फिर उस लिंक को इंगित करने के लिए JAVA_HOME सेट कर सकते हैं। उदाहरण के लिए, "अद्यतन-विकल्प - स्थापना/usr/lib/jdk jdk/path/to/jdk8 1" आपके जेडीके निर्देशिका के लिए एक लिंक स्थापित करेगा। इसके बाद आप "निर्यात JAVA_HOME/usr/lib/JDK करने के लिए" .bashrc, .profile, या जो कुछ भी फाइल में आप वातावरण चर और किसी भी विकल्प आप नाम JDK के तहत स्थापित JAVA_HOME द्वारा की ओर इशारा किया जाएगा जब आप अद्यतन के साथ स्विच स्थापित करने के लिए का उपयोग करें जोड़ने - वैकल्पिक --config jdk। यदि आप जावा एक्जिक्यूटिव के लिए पहले से ही विकल्पों का उपयोग कर रहे हैं, तो जब भी जावा करता है तो jdk बनाने के लिए आप स्लेव का उपयोग कर सकते हैं।

संबंधित मुद्दे