জাভা সম্পর্কিত সমস্ত বিকল্প আপডেট করার কোনও উপায় আছে কি?


51

জাভা সম্পর্কিত সমস্ত বিকল্প ব্যবহার করে দ্রুত স্যুইচ করার কোনও উপায় আছে কি update-alternatives?

উদাহরণস্বরূপ, যদি sudo update-alternatives --config javaজাভাটি 7-তে স্যুইচ করতে চান তবে আমি চালিয়ে জাভা 7 ওপেনজেডিকে নির্বাচন করি select তবে আমি যদি চালাতে update-alternatives --get-selections | grep javaপারি তবে আমি নিম্নলিখিতটি পাই,

appletviewer                   auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/appletviewer
extcheck                       auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/extcheck
idlj                           auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/idlj
itweb-settings                 auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/itweb-settings
jar                            auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jar
jarsigner                      auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jarsigner
java                           manual   /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java
javac                          auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/javac
javadoc                        auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/javadoc
javah                          auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/javah
javap                          auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/javap
javaws                         auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/javaws
jconsole                       auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jconsole
jdb                            auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jdb
jexec                          auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/jexec
jhat                           auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jhat
jinfo                          auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jinfo
jmap                           auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jmap
jps                            auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jps
jrunscript                     auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jrunscript
jsadebugd                      auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jsadebugd
jstack                         auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jstack
jstat                          auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jstat
jstatd                         auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/jstatd
keytool                        auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/keytool
native2ascii                   auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/native2ascii
orbd                           auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/orbd
pack200                        auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/pack200
policytool                     auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/policytool
rmic                           auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/rmic
rmid                           auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmid
rmiregistry                    auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/rmiregistry
schemagen                      auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/schemagen
serialver                      auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/serialver
servertool                     auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/servertool
tnameserv                      auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/tnameserv
unpack200                      auto     /usr/lib/jvm/java-6-openjdk-amd64/jre/bin/unpack200
wsgen                          auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/wsgen
wsimport                       auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/wsimport
xjc                            auto     /usr/lib/jvm/java-6-openjdk-amd64/bin/xjc

আপনি দেখতে পাচ্ছেন যে, আমার জাভা বিকল্পটি 7-তে স্যুইচ করা হয়েছিল, তবে ওপেনজেডিকে 6 ভিত্তিক অন্যান্য বিকল্পগুলি স্যুইচ করা হয়নি। অবশ্যই আমি প্রত্যেককে নিজেই স্যুইচ করতে পারি বা এটি করার জন্য একটি স্ক্রিপ্ট লিখতে পারি, তবে আমি অনুমান করি এটি করার আরও ভাল উপায় আছে।

উত্তর:


70

কৌশলটি হ'ল update-java-alternatives( java-commonপ্যাকেজ থেকে )।

সুতরাং ওপেনজেডিকে 6 থেকে 7 এ যাওয়ার জন্য, আমি update-java-alternatives -lজাভা বিকল্পগুলির একটি তালিকা পেতাম এবং তারপরে জেডিকে ব্যবহার করতাম sudo update-java-alternatives -s java-1.7.0-openjdk-amd64

দ্রষ্টব্য: উপরের কমান্ডটি নিম্নলিখিত ত্রুটিগুলি ছুঁড়ে ফেলেছে,

update-alternatives: error: no alternatives for mozilla-javaplugin.so.
update-java-alternatives: plugin alternative does not exist: /usr/lib/jvm/java-7-openjdk-amd64/jre/lib/amd64/IcedTeaPlugin.so

এটি কারণ ওপেনজেডক প্লাগইনটি ডিফল্টরূপে ইনস্টল করা হয়নি। রান ঠিক করতে

sudo apt-get install icedtea-7-plugin

এবং পুনরায় চালু update-java-alternatives


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

ওরাকলস জেভিএমের সাথে কী আছে? আমি কীভাবে এটি ব্যবহার করতে পারি? এবং জেডিকে নির্দিষ্ট নির্বাহী?
কেইকি

2
দৌড় update-java-alternatives --set java-1.8.0-openjdk-amd64আমার এখনও আছে default-java -> /usr/lib/jvm/java-7-oracle। এটি কি no alternatives for mozilla-javaplugin.soত্রুটির কারণে ঘটেছে? আমি কীভাবে এটি পরিবর্তন করতে পারি?
একাকী

3

jbro http://ubuntuforums.org/showthread.php?t=1817528 এ একই প্রশ্ন জিজ্ঞাসা করেছিল এবং এই ইস্যুটির জন্য একটি স্ক্রিপ্ট লিখেছিল,

#!/bin/bash

update-alternatives --get-selections | grep -i openjdk |
while read line
do
    alternative=$(echo $line | awk '{print $1}')
    path=$(echo $line | awk '{print $3}')
    newpath=$(echo $path | sed -e 's/java-6-openjdk/java-6-sun/')
    status=unchanged
    if [ -f $newpath ]
    then
    status=modified
    echo "-> update-alternatives --set $alternative $newpath"
    update-alternatives --set $alternative $newpath
    else
    echo "$alternative unchanged"
    fi
done

যদি এর চেয়ে ভাল উত্তর না হয় তবে এটি দৃ a় কাজের মতো মনে হয়, তবে আমি ধরে নিচ্ছি update-alternativesএটি পরিচালনা করার জন্য আরও ভাল উপায় থাকতে হবে ।

আমি কোডটি কিছুটা সম্পাদনা করেছি, কারণ এটি ইনস্টল করার আগে আপনাকে পরিবর্তনগুলি করতে দেয় না। আমি নীচে আরও দুটি লাইন যুক্ত করেছি ...

#!/bin/bash

update-alternatives --get-selections | grep -i openjdk |
while read line
do
    alternative=$(echo $line | awk '{print $1}')
    path=$(echo $line | awk '{print $3}')
    newpath=$(echo $path | sed -e 's/java-6-openjdk/java-6-sun/')
    status=unchanged
    if [ -f $newpath ]
    then
    status=modified
echo "-> update-alternatives --install /usr/bin/$alternative $alternative $newpath 1"
update-alternatives --install /usr/bin/$alternative $alternative $newpath 1
    echo "-> update-alternatives --set $alternative $newpath"
    update-alternatives --set $alternative $newpath
    else
    echo "$alternative unchanged"
    fi
done

1

ওরাকল জেভিএমের জন্য, এটি চালান:

sudo update-java-alternatives -s java-7-oracle

0

<টিএল; ডিআর> আপডেট-জাভা-বিকল্পগুলি কোন বিকল্পগুলি স্যুইচ করতে হবে তা নির্ধারণ করতে। Jinfo ফাইল ব্যবহার করে তবে সেগুলি পৃথকভাবে কনফিগার করাও প্রত্যাশা করে।

আপনার ডাউনলোড হওয়া জেআরআই / জেডি কে আপডেট-জাভা-বিকল্পগুলির সাথে স্যুইচ না করে তবে একটি নতুন .জিনফো ফাইল এবং আপডেট -বিকল্প বিকল্পগুলি তৈরি করুন

[বিস্তারিত]

এটি ম্যানুয়ালি কনফিগার করতে:

  1. বিদ্যমান নতুন জেডিকে পাশাপাশি আপনার নতুন জেডিকে সংক্ষেপিত করুন /usr/lib/jvm/

  2. ফোল্ডারে অন্য .jinfo ফাইলটিকে নকল করে একটি .jdkname.jinfo ফাইল উত্পন্ন করুন (বা অন্য একটি উবুন্টু ইনস্টল থেকে ধরুন: আপনি অন্য কোনও কিছুর চেয়ে টেমপ্লেটের পরে রয়েছেন)।

    ফাইলের নাম। jdkname। jinfo অবশ্যই jdk ফোল্ডারনেমের সাথে মেলে।

    আপনার নতুন ইনস্টলের সাথে মেলে শিরোনাম (নাম) এবং ফাইল পাথ (প্রোগ্রাম এন্ট্রি) সেট করতে সামগ্রীটি পরিবর্তন করুন।

    আপনার সংস্করণে বাদ দেওয়া প্রোগ্রামগুলিকে উল্লেখ করে যে কোনও লাইন সরিয়ে ফেলুন এবং নতুন প্রোগ্রামগুলির জন্য লাইন যুক্ত করুন /bin

  3. এই টেম্পলেটটি দিয়ে আপনার .jinfo প্যাকেজে এখন সমস্ত প্রোগ্রামের বিকল্প তৈরি করুন:

    sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/**jdkname**/bin/java 100

    (বেশ কয়েকটি সম্পর্কিত উত্তর এটিকে / বিনের বিষয়বস্তু থেকে লিপিবদ্ধ করেছে বা স্ক্রিপ্ট কমান্ড উত্পন্ন করতে আপনি .jinfo ফাইলে regexp অনুসন্ধান / প্রতিস্থাপন করতে পারেন))

    নোট করুন 100 কেবলমাত্র অগ্রাধিকার যা অটো পতাকা ব্যবহার করে jdk সংস্করণ সেট করার সময় বিবেচনা করা হয়।

  4. জাভা বিকল্পগুলি পরীক্ষা করে জেডিকে ব্যবহার করতে স্যুইচ করুন।

    update-java-alternatives -l  
    update-java-alternatives -s jdkname  

    মনে রাখবেন যে কিছু জেডিকে জেআরই অন্তর্ভুক্ত করে না, তাই এটি যুক্ত করুন বা j জিনফো এন্ট্রিগুলি সরান।

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