একাধিক জাভা সংস্করণের মধ্যে স্যুইচ করুন


65

উবুন্টু ১৪.০৪ এ অ্যান্ড্রয়েড স্টুডিও ইনস্টল করার সময় আমি এই বার্তাটি পেয়েছি যে আমার জাভা সংস্করণ ( javac 1.7.0_79) সমস্যা সৃষ্টি করছে। আমি জাভাটির আরও নতুন ওরাকল সংস্করণটি কীভাবে ইনস্টল করব তার একটি সমাধান পেয়েছি :

sudo apt-add-repository ppa:webupd8team/java
sudo apt-get update
sudo apt-get install oracle-java8-installer

তবে আমি আশঙ্কা করছি যে এটি জাভাটির আমার বিদ্যমান open-jdkসংস্করণটি ওভাররাইট করে । যেহেতু আমি জানি না আমার কোন প্রোগ্রাম জাভার উপর নির্ভরশীল, তাই আমি আশঙ্কা করি যে এটি অন্যান্য প্রোগ্রামগুলি ক্র্যাশ করতে পারে।

apt-getআমার পূর্ববর্তী জাভা ওভাররাইট না করে তা নিশ্চিত করার কোনও উপায় আছে ? আমি মূলত উভয়ই ইনস্টল করতে এবং আমার কোন সংস্করণটি প্রয়োজন তার উপর নির্ভর করে ম্যানুয়ালি তাদের মধ্যে স্যুইচ করতে সক্ষম হতে চাই।

উত্তর:


82

অ্যাপটি-গেট বিদ্যমান জাভা সংস্করণগুলিকে ওভাররাইট করবে না।

ইনস্টল করা জাভা সংস্করণগুলির মধ্যে স্যুইচ করতে, update-java-alternativesকমান্ডটি ব্যবহার করুন ।

সমস্ত জাভা সংস্করণ তালিকাবদ্ধ করুন:

update-java-alternatives --list

জাভা সংস্করণটি ডিফল্ট হিসাবে সেট করুন (মূল অনুমতি প্রয়োজন):

sudo update-java-alternatives --set /path/to/java/version

... /path/to/java/versionপূর্ববর্তী কমান্ড (উদাহরণস্বরূপ /usr/lib/jvm/java-7-openjdk-amd64) তালিকাভুক্তদের মধ্যে কোথায় রয়েছে ?


অতিরিক্ত তথ্য:

update-java-alternativesডেবিয়ান এর ব্যবহার করে এমন সুবিধার টুল বিকল্প ব্যবস্থা ( update-alternativesনিদিষ্ট জাভা সংস্করণ লিঙ্ক একটি গুচ্ছ সেট করতে) (যেমন java, javac, ...)।


1
আমার জন্য এটি জাভা-রূপান্তরটি জাভা 8 হওয়ার কারণ হয়েছিল, তবে জাভাআহোম এখনও 7 :(
নেনোটলেপ

tq এই আমার সমস্যাও সমাধান করুন। @ ননোটলেপ আমি যা করেছি তা হ'ল .bashrc বা / ইত্যাদি / এনভায়রনমেন্টে ম্যানুয়ালি এনভায়রনমেন্ট ভেরিয়েবল এডিট করা
নিউটনিবলস

update-java-alternativesআমার জন্য উপলব্ধ ছিল না। আমি সবেমাত্র সেই আদেশটি প্রতিস্থাপন করেছি update-alternatives java
নফিনেটর

@ নোফিনেটর যা কেবল কার্যকর কার্যকরকে প্রভাবিত করে java। আপনি কোন উবুন্টু সংস্করণ ব্যবহার করেন?
ডানজেল

1
@ ননোটলেপ পরিবর্তনের জন্য JAVA_HOMEআপনাকে নিম্নলিখিত কমান্ডটি চালাতে হবে: source /etc/environment
জানু

48

ব্যবহার

sudo update-alternatives --config java

যা বর্তমান সক্রিয় চিহ্নিত চিহ্নিত এবং ইনস্টল করা সংলাপটি স্যুইচ করার জন্য ডায়ালগ সরবরাহ করে:

There are 3 choices for the alternative java (providing /usr/bin/java).

Selection    Path...
------------------------------------------------------------
  0            /usr/lib/jvm/java-9-oracle/bin/java...
* 1            /usr/lib/jvm/java-7-oracle/jre/bin/java...
  2            /usr/lib/jvm/java-8-oracle/jre/bin/java...
  3            /usr/lib/jvm/java-9-oracle/bin/java...

Press <enter> to keep...[*], or type selection number: 

ব্যবহার

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

$JAVA_HOMEবর্তমান সক্রিয় সংস্করণ থেকে সেট করতে


গৃহীত উত্তরে @ উদ্যানেল দ্বারা উল্লিখিত হিসাবে javaএটি কনফিগারেশনের অন্যান্য অংশগুলিকে নয়, কেবল কার্যকর কার্যকরকে প্রভাবিত করে। update-java-alternativesযদি পাওয়া যায় তবে ব্যবহার করুন ।
প্রেমেক ব্রাদা

4

@ এময়েটের উত্তরের ভিত্তিতে, আমি এটি নির্বিঘ্নে কাজ করতে দেখতে পেয়েছি:

এটি এতে যুক্ত করুন ~/.bashrc:

export JAVA_HOME="$(jrunscript -e 'java.lang.System.out.println(java.lang.System.getProperty("java.home"));')"

উপাধিতে যুক্ত করুন:

alias useJava8='yes | sudo apt-get install oracle-java8-set-default && source ~/.bashrc'
alias useJava7='yes | sudo apt-get install oracle-java7-set-default && source ~/.bashrc'

তারপরে আপনি কেবল: useJava7বা ব্যবহার করে একই শেলের মধ্যে স্যুইচ করতে পারেনuseJava8



ই: প্যাকেজ ওরাকল-জাভা 7-সেট-ডিফল্ট সনাক্ত করতে অক্ষম
প্রকাশ পান্ডে

বিভিন্ন জাভা সংস্করণগুলির মধ্যে ইনস্টল, ব্যবহার এবং স্যুইচ করার দ্ব্যর্থহীনতম সহজ উপায়টি এসডিকেম্যান ব্যবহার করছে! এখানে দেখুন: sdkman.io/usage.html
bianjohnsen

জ্যাভিএহোম সেট করার জন্য সম্প্রতি অন্য কমান্ডটি পেয়েছে, তারপরেও চেষ্টা করার জন্য .bashrc:export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which java))))
থিয়ামটেক

3

জাভা কনফিগার করা হচ্ছে

কমান্ড লাইনে কোন সংস্করণটি ডিফল্ট হিসাবে ব্যবহার করে তা কনফিগার করতে পারেন update-alternatives, যা বিভিন্ন কমান্ডের জন্য কোন প্রতীকী লিঙ্কগুলি ব্যবহার করে তা পরিচালনা করে।

sudo update-alternatives --config java

আউটপুট নীচের মত কিছু হবে।

There are 5 choices for the alternative java (providing /usr/bin/java).

  Selection    Path                                            Priority   Status
------------------------------------------------------------
* 0            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      auto mode
  1            /usr/lib/jvm/java-6-oracle/jre/bin/java          1         manual mode
  2            /usr/lib/jvm/java-7-oracle/jre/bin/java          2         manual mode
  3            /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java   1081      manual mode
  4            /usr/lib/jvm/java-8-oracle/jre/bin/java          3         manual mode
  5            /usr/lib/jvm/java-9-oracle/bin/java              4         manual mode

Press <enter> to keep the current choice[*], or type selection number:

আপনি এখন ডিফল্ট হিসাবে ব্যবহার করতে নম্বরটি চয়ন করতে পারেন। এটি অন্যান্য জাভা কমান্ডগুলির জন্যও করা যেতে পারে, যেমন সংকলক ( javac), ডকুমেন্টেশন জেনারেটর ( javadoc), জেআর স্বাক্ষরকরণ সরঞ্জাম ( jarsigner) এবং আরও অনেক কিছু। আপনি যে কমান্ডটি কাস্টমাইজ করতে চান তা পূরণ করে আপনি নীচের কমান্ডটি ব্যবহার করতে পারেন ।

sudo update-alternatives --config command

JAVA_HOMEপরিবেশ পরিবর্তনশীল নির্ধারণ

জাভা সার্ভারের মতো অনেক প্রোগ্রাম জাভা ইনস্টলেশন অবস্থান নির্ধারণ করতে JAVA_Home এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করে।

আপনার পছন্দসই ইনস্টলেশন থেকে পাথটি অনুলিপি করুন এবং তারপরে সাব্লাইম পাঠ্য বা আপনার প্রিয় পাঠ্য সম্পাদক ব্যবহার করে / ইত্যাদি / পরিবেশটি খুলুন।

sudo subl /etc/environment

এই ফাইলটির শেষে, নীচের লাইনটি যুক্ত করুন, আপনার নিজের অনুলিপিযুক্ত পথের সাথে হাইলাইটেড পাথটি প্রতিস্থাপন করার বিষয়টি নিশ্চিত করে।

JAVA_HOME="/usr/lib/jvm/java-8-oracle"

সংরক্ষণ করুন এবং ফাইলটি থেকে প্রস্থান, এবং এটি পুনরায় লোড: source /etc/environment
আপনি এখন পরীক্ষা করতে পারেন এনভায়রনমেন্ট ভেরিয়েবল জন্য নিম্নলিখিত কমান্ড ব্যবহার নির্ধারণ করা হয়েছে কিনা: echo $JAVA_HOME। এটি আপনার সবেমাত্র নির্ধারিত পথে ফিরে আসবে।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.