গ্রেডল সঠিকভাবে সেট করা সত্ত্বেও ভুল জেভিএহোমকে খুঁজে পেয়েছে


168

গ্রেড চালানোর চেষ্টা করার সময়, আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

# gradle

ERROR: JAVA_HOME is set to an invalid directory: /usr/lib/jvm/default-java

Please set the JAVA_HOME variable in your environment to match the
location of your Java installation.

যাইহোক, আমি যখন জেভিএহোম ভেরিয়েবলটি পরীক্ষা করি তখন আমি পাই:

# echo $JAVA_HOME 
/usr/lib/jvm/java-7-oracle

আমার জাভাআহোম .bashrc এ সংজ্ঞায়িত করা হয়েছে এবং আমি এটির উত্স হিসাবে সেট করা আছে তা দ্বিগুণ পরীক্ষা করে দেখেছি।

চলমান java -versionএটিও নিশ্চিত করে যে জাএভিএহোম সঠিকভাবে সেট করা আছে এবং প্যাথে রয়েছে।

# java -version
java version "1.7.0_51"
Java(TM) SE Runtime Environment (build 1.7.0_51-b13)
Java HotSpot(TM) 64-Bit Server VM (build 24.51-b03, mixed mode)

আমি সেই /usr/bin/javaসিমলিংকগুলিও পরীক্ষা করে দেখেছি /etc/alternatives/javaযার পরিবর্তে সঠিকভাবে প্রতিলিঙ্ক হয়/usr/lib/jvm/java-7-oracle/jre/bin/java

উপরন্তু আমি কোন সদৃশ JAVA_HOME সংজ্ঞা আছে চেক করেছি .bash_profileবা /etc/profile

সুতরাং আমার প্রশ্ন হ'ল গ্রেডল কীভাবে খুঁজে পাবে /usr/lib/jvm/default-javaএবং আরও গুরুত্বপূর্ণভাবে আমি এটি সঠিক ডিরেক্টরিতে কীভাবে নির্দেশ করব?

অন্যান্য প্রোগ্রামগুলির জন্য জেডিকে দরকার সূক্ষ্ম কাজ, সুতরাং আমি মনে করি এটি একটি গ্রেডল ইস্যু। আমি গ্রেডল পুনরায় ইনস্টল করার চেষ্টা করেছি যা কোনও পার্থক্য করেনি।

আমি 64 বিবিট জুবুন্টু (উবুন্টু 13.10 বেস) চালাচ্ছি


সম্পূর্ণ ত্রুটি আউটপুট সরবরাহ করুন। এটি যেমন দাঁড়িয়েছে, তবে বার্তাটি কোথা থেকে এসেছে তা পরিষ্কার নয়। এছাড়াও, আপনার কি কোনও /usr/lib/jvm/default-javaডিরেক্টরি বা সিমলিংক রয়েছে? এবং আপনি কিভাবে গ্র্যাডল ইনস্টল করবেন?
পিটার নিডারউইজার

আমি কিউ আপডেট করেছি, তবে সম্পূর্ণ ত্রুটি আউটপুট হ'ল। সেখানে নেই /usr/lib/jvm/default-javaDir। অ্যাপের সাথে ইনস্টল করা হয়েছে (অ্যাপ্লিকেশন ইনস্টল গ্রেডেল)
জেমস বার্নেট

গ্রেডল প্রারম্ভিক স্ক্রিপ্ট JAVA_HOMEসেট করার দরকার নেই । যদি JAVA_HOMEসেট করা থাকে তবে স্ক্রিপ্টটি $JAVA_HOME/bin/javaগ্রেডল চালাতে ব্যবহার করে। অন্যথায়, এটি ব্যবহার করে java(অর্থাত্‍ javaএটি থাকা উচিত PATH)। সম্ভবত (তৃতীয় পক্ষের) এপ প্যাকেজটি একটি পরিবর্তিত প্রারম্ভিক স্ক্রিপ্ট ব্যবহার করে।
পিটার নিদারউইজার

হ্যাঁ মনে হচ্ছে যে পিপিএর কাছ থেকে আমি বাইনারি পেয়েছিলাম তা হার্ড কোড করে এবং জাভাহোমকে রফতানি করেছে usr/lib/jvm/defult-java। সহায়তার জন্য ধন্যবাদ
জেমস বার্নেট

source ~/.bashrcজাভাআহোম সেট করার পরে আপনি কি করেছিলেন , বা আপনার মেশিনটি পুনরায় বুট করেছেন?
ইগোরগানাপলস্কি

উত্তর:


263

দেখা যাচ্ছে যে আমি উবুন্টু 13.10 সংগ্রহস্থল থেকে বিশেষ গ্রেডল বাইনারি ডাউনলোড করেছি সে নিজেই জাভাহোম রফতানি করার চেষ্টা করে। লুকাসকে ধন্যবাদ পরামর্শ ।

/usr/bin/gradle 70 লাইন:

export JAVA_HOME=/usr/lib/jvm/default-java

এই লাইনটি মন্তব্য করা সমস্যার সমাধান করে এবং গ্রেডল জাভা বাইনারিটির সঠিক পথ খুঁজে বের করে।

আপনি যদি কেবল তাদের ওয়েবসাইট থেকে বাইনারি ডাউনলোড করেন তবে এতে সমস্যা নেই, উবুন্টু রেপো সংস্করণে এটি একটি সমস্যা। 13.10 সংস্করণ সহ আরও কিছু সমস্যা রয়েছে বলে মনে হয়।


গ্রেডেল প্যাকেজটি এই স্থানে জেডিকে ইনস্টল করার জন্য অন্তত উবুন্টু 12.04 এলটিএসে কেবলমাত্র ডিফল্ট সংগ্রহস্থল সহ ইনস্টল করতে উপস্থিত হয়। আমি এটি একটি উবুন্টু ভিএম-তে করেছি যা জাভা ছিল না, এটি প্রথমে স্ন্যাপশট করে, অ্যাপ্লিকেশন গ্রেডেল (যা প্রায় ৪০০ প্যাকেজ ইনস্টল করে), এবং এটি জাভা / usr / lib / jvm তে ইনস্টল করেছে ... রিভার্টেড স্ন্যাপশট, ন / ইউএসআর / lib / অনুপস্থিত JVM। আমি জ্যাভাআহুম হোম গ্রেড স্ক্রিপ্ট রফতানি করার তত্ত্বটি পরীক্ষা করছিলাম এবং এটি যেমনটি পেয়েছে, তেমনই খুঁজে পেয়েছি।
জোশুয়া ম্যাককিনন

2
গ্রেডল এটি করে না। পিপিএ অন্য কারও দ্বারা সরবরাহ করা হয়েছে, এবং তাই আপনাকে তাদের জিজ্ঞাসা করতে হবে। সাধারণভাবে, আমি প্যাকেজ ম্যানেজারের মাধ্যমে ইনস্টল না করে গ্র্যাডেল র‍্যাপারের মাধ্যমে গ্রেডলকে বুটস্ট্র্যাপ করার পরামর্শ দেব।
পিটার নিডারউইজার

আমি উত্তরটি আরও পরিষ্কার করে দিয়েছিলাম যে উবুন্টু রেপো সংস্করণটি গ্র্যাডল নয়, সমস্যা the
জেমস বার্নেট 20

11
ধন্যবাদ, আমি এই সমস্যার সমাধানের জন্য এক ঘন্টা ধরে অনুসন্ধান করি for এই পোস্টের জন্য ধন্যবাদ, এটি উবুন্টুতে আমার সমস্যা সমাধান করে 14.04
কে স্নাইডার

1
আপনার নিজের সমস্যা সমাধানের উপায় (এবং আমার একই সাথে)! এটি লজ্জাজনক যে এই প্রশ্নটি এক বছরের পুরানো এবং এটি ঠিক করার জন্য সংগ্রহশালার গ্রেডল লিপিটি আপডেট করা হয়নি।
sotrh

49

একটি প্রতীকী লিঙ্ক যোগ করুন

sudo ln -s /usr/lib/jvm/java-7-oracle /usr/lib/jvm/default-java

@ নার আপনি দয়া করে JAVA
শশী

জবাব দেওয়ার জন্য আপনাকে ধন্যবাদ তবে জাভা এর পাথ গুরুত্বপূর্ণ নয় কারণ গ্রেড স্ক্রিপ্ট পাথকে ওভাররাইড করে বলেছে জেমস stackoverflow.com/a/22309017/1679348
নার

5
আমার জন্য ঠিক কাজ করে। নামটি ( ডিফল্ট-জাভা ) দেওয়া, আমি বলতে চাই এটি মোটামুটি বুদ্ধিমান পদ্ধতির।
ফিল

2
আমার মতে গ্রেডল ফাইলগুলি পরিবর্তনের চেয়ে এটি আরও ভাল সমাধান। (এবং হ্যাঁ, এটি আমার পক্ষে ঠিক কাজ করে)
zorglub76

ধন্যবাদ জনাব! তুমি আমার সময় বাঁচিয়েছ!
অ্যালেক্সখ

21

সমাধানটি জাভা_হোম == দিরের বিনের উপরে তৈরি করা যেখানে জাভাক যেমনটি বাস করে

type javac

javac is /usr/bin/javac   # now check if its just a symlink

ls -la /usr/bin/javac 

/usr/bin/javac -> /etc/alternatives/javac   # its a symlink so check again

ls -la /etc/alternatives/javac  # now check if its just a symlink

/etc/alternatives/javac -> /usr/lib/jvm/java-8-openjdk-amd64/bin/javac

ঠিক আছে, অবশেষে বিনটি প্রকৃত জাভাকের উপরে পাওয়া গেল তাই এটি করুন

export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export PATH=$JAVA_HOME/bin:$PATH

উপরে সরলীকরণ এবং সাধারণীকরণ করা যেতে পারে

which javac >/dev/null 2>&1 || die "ERROR: no 'javac' command could be found in your PATH"
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac)  )))

13

আমার জন্য এই ত্রুটিটি গ্রেডলকে সুডো হিসাবে ইনস্টল করার কারণে এবং গ্রাডল চালানোর জন্য আমি ডিফল্ট ব্যবহারকারী হিসাবে চেষ্টা করছিলাম।

চেষ্টা করুন:

sudo gradle -version

অথবা

sudo gradle -v

7

এর সর্বশেষ সংস্করণ ইনস্টল করার চেষ্টা করুন gradle,

sudo add-apt-repository ppa:cwchien/gradle

sudo apt-get update

sudo apt-get install gradle

যদি আমরা উবুন্টু রেপো থেকে ইনস্টল করি তবে এটি পুরানো সংস্করণ ইনস্টল করবে, (আমার জন্য এটি গ্রেড 1.4 ছিল)। পুরানো সংস্করণে, এটি গ্রেড হিসাবে জাভা হোম সেট করে export JAVA_HOME=/usr/lib/jvm/default-java। সর্বশেষ সংস্করণে এই সমস্যা নেই।


5

তুমি কি exportতোমার JAVA_HOME? রফতানি না করে সেটিংটি সেই শেলের ভিতরে শুরু হওয়া কমান্ডগুলিতে প্রচার করা হবে না। এছাড়াও, java -versionব্যবহার করে না JAVA_HOME, বরং এটি javaআপনার পথে প্রথম পাওয়া ব্যবহার করে । আপনার .bashrcচেহারা দেখতে এরকম কিছু হবে তা নিশ্চিত করুন :

JAVA_HOME=/path/to/java/home
export JAVA_HOME

1
হ্যাঁ, এটি .bashrc হিসাবে সংজ্ঞায়িত করা হয়েছে export JAVA_HOME=/usr/lib/jvm/java-7-oracle(কিছুটা আলাদা সিনট্যাক্স তবে আমি এটির একই ধারণা করি)
জেমস বার্নেট

3
@ জেমসবার্নেট, gradleকমান্ড নিজেই সেই পরিবর্তনশীল সেট করতে পারে? সম্ভবত যে ব্যক্তি ইনস্টল করেছেন gradleতিনি অ্যাপ্লিকেশন শুরুর আগে একটি মোড়ক স্ক্রিপ্ট তৈরি করেছেন যা পরিবেশের পরিবর্তনগুলি সেট করে। টোমক্যাট ব্যবহার করার সময়, পরিবেশের ভেরিয়েবলগুলি অন্তর্ভুক্ত করার জন্য catalina.sh(যা সূচনা স্ক্রিপ্টটি) কল করতে অস্বাভাবিক কিছু নয়setenv.shJAVA_HOME
লুকাস

4

আমি উবুন্টুতে নিম্নলিখিত কমান্ডটি চালানোর সময় আমি এই সমস্যার মুখোমুখি হয়েছি:

ionic build android

এই সমস্যাটি সমাধান করার জন্য, আমি নিম্নলিখিত পদক্ষেপগুলি করেছি:

ln -sf /usr/lib/jvm/java-7-openjdk-amd64/jre/bin/java /usr/lib/jvm/default-java

জেভিএহোমকে / ইত্যাদি / পরিবেশে যুক্ত করুন:

vi /etc/environment

যোগ করুন

JAVA_HOME="/usr/lib/jvm/default-java"

সংরক্ষণের পরে, এটি পড়ুন:

source /etc/environment

অবশেষে, আপনি বিল্ড কমান্ড চালাতে পারেন।


4

আমারও একই সমস্যা ছিল, তবে আমি সর্বশেষ সংস্করণ ২.১13 এর গ্রেড ফাইলের line০ নং লাইনে রফতানি কমান্ডটি খুঁজে পাইনি, তবে আমি সেখানে একটি নির্বোধ ভুল বুঝতে পেরেছি, এটি অনুসরণ করা হচ্ছে,

আপনি যদি আপনার গ্রেড ফোল্ডারে / বিন / গ্রেডে রফতানি কমান্ড সহ 70 লাইনটি খুঁজে না পান, তবে আপনার ~ / .Bashrc দেখুন, যদি আপনি খুঁজে পান তবে এই লাইনটি থেকে export JAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64/bin/javaসরান , এবং এটি পথে >>> পরিবর্তে এর , এটি হবে । তারপরে দৌড়াও ।/bin/javaJAVA_HOME==/usr/lib/jvm/java-7-openjdk-amd64export PATH=$PATH:$HOME/bin:JAVA_HOME/export PATH=$PATH:$HOME/bin:JAVA_HOME/bin/javasource ~/.bashrc

কারণটি হ'ল, যদি আপনি আপনার গ্রেড ফাইলটি পরীক্ষা করেন তবে আপনি 70 লাইনে (যদি কোনও এক্সপোর্ট কমান্ড নেই) বা 75 নং লাইনে পাবেন,

JAVACMD="$JAVA_HOME/bin/java"
    fi
    if [ ! -x "$JAVACMD" ] ; then
        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME

এর অর্থ /bin/javaইতিমধ্যে রয়েছে, সুতরাং এটির JAVA_HOMEপথ থেকে বাদ দেওয়া দরকার ।

আমার ক্ষেত্রেও তা ঘটেছিল।


4

আমার উবুন্টুতে, এই সমস্যাটি নিয়ে আমার 2 দিনের মাথা ব্যাথা রয়েছে।

পদক্ষেপ 1. টার্মিনালে টাইপ করুন whereis java তারপরে এটি এর মতো কিছু প্রদর্শন করবে

java: /usr/bin/java /etc/java /usr/share/java /usr/lib/jvm/java-8-openjdk-amd64/bin/java /usr/share/man/man1/java.1.gz

পদক্ষেপ ২.পথটি নোট করুন: /usr/lib/jvm/java-8-openjdk-amd64/bin/java

বাদ দিন bin/java

আপনার জাভাহোম = /usr/lib/jvm/java-8-openjdk-amd64


কী এখানে / বিন / জাভা বাদ দেওয়ার জন্য রয়েছে
বোরজান্ট

2

আমার জন্য এক্সলিপসে বাহ্যিক সরঞ্জামগুলির কনফিগারেশনের আর্গুমেন্ট বিভাগে একটি স্পষ্ট সেট সমস্যা ছিল।

এখানে চিত্র বর্ণনা লিখুন


2

আপনি আপনার গ্রেডেল ইনস্টলেশন ফোল্ডারের ভিতরে বিন ফোল্ডারে যেতে পারেন এবং গ্রেড.ব্যাট ফাইলে JAVA_HOME প্যারামিটারটি সংশোধন করতে পারেন। আমার ক্ষেত্রে, আমার জাভাএহোমকে সি: \ প্রোগ্রাম ফাইলগুলি ava জাভা \ বিন সেট করা হয়েছিল গ্রেড.ব্যাটের জাভাআহোমকে% জাভাআহোম% \ বিন \ জাভা.এক্সে সেট করা হয়েছিল।

আমি গ্রেড.ব্যাটে জেভিএহোম সংশোধন করেছি এবং এটি কাজ করেছে।

ধন্যবাদ!!!


এটি এখন 2019 এবং এটি এখনও একটি ইস্যু! এর সামান্য পৃথক এবং ভেরিয়েবলটি ফল্ট ব্যতীত এখন "JAVA_EXE =% JAVA_Home% / bin / java.exe সেট করুন" - ঠিক করতে এখানে থেকে বিন অংশটি সরান।
অ্যান্ডি লরেঞ্জ

2
sudo ln -s /usr/lib/jvm/java-7-oracle/jre /usr/lib/jvm/default-java

ডিফল্ট-জাভা ডিরেক্টরিতে একটি প্রতীকী লিঙ্ক তৈরি করুন।

আপনি আপনার জাভা ডিরেক্টরিটি খুঁজে পেতে পারেন

readlink -f $(which java) 
# outputs: /usr/lib/jvm/java-7-oracle/jre/bin/java
# Remove the last `/bin/java` and use it in above symbolic link command.

এই আদেশটি কী করে এবং কেন এটির প্রয়োজন তা যদি আপনি ব্যাখ্যা করেন তবে এই উত্তরটির উন্নতি হবে।
ইয়ান ম্যাকলেয়ার্ড

2

কমান্ড চালানোর আগে প্রবেশ করার চেষ্টা করুন:

export JAVA_HOME="path_to_java_home"

কোথায় path_to_java_homeফোল্ডারে আপনার হয় bin/javaহয়।

জাভা যদি সঠিকভাবে ইনস্টল করা থাকে তবে কমান্ডটি ব্যবহার করে আপনি এর অবস্থানটি খুঁজে পেতে পারেন:

readlink -f $(which java)

bin/javaএটিকে theোকানোর সময় পথের শেষ থেকে সরাতে ভুলবেন নাJAVA_HOME


1

আমারও এ নিয়ে সমস্যা ছিল। এটি সঠিক ছিল যখন এটি ভুল ডিরেক্টরি বলে। সুতরাং আমি স্রেফ জাভাওয়াহোম নামের চূড়ান্ত / বিন / জাভা বাদ দিয়ে একটি স্থানীয় ভেরিয়েবল তৈরি করেছি। এটা আমার জন্য ভাল কাজ করেছিল.


1

যদি আপনার জিআরডিএলহোম এবং জাভাআহোম পরিবেশটি সঠিকভাবে সেট করা থাকে তবে আপনার জেডিকে ডিরেক্টরিটি পরীক্ষা করে নিন এবং নিশ্চিত করুন যে আপনার নীচে নীচে java.exe ফাইল রয়েছে।

C:\Program Files (x86)\Java\jdk1.8.0_181\bin

গ্রেড.ব্যাট ফাইলটিতে ত্রুটি হিসাবে উল্লেখ করা হয়েছে

:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe

if exist "%JAVA_EXE%" goto init

echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.

এটি আপনার জাভা ইনস্টলেশনটি সনাক্ত করতে সক্ষম নয়। সুতরাং খুঁজে এবং সেট করুন

java.exe

অধীনে %JAVA_HOME%/bin যদি সবকিছু সঠিক হয়।

এটি আমার পক্ষে কাজ করে (আমার অ্যাকাউন্ট ক্লায়েন্ট দ্বারা অক্ষম হয়ে গেছে এবং তাদের প্রশাসক আমার ডিরেক্টরি থেকে java.exe সরিয়ে ফেলেছে))


0

আমার ডকরেঙ্কটেনারে (জাভা খুঁজে না পাওয়ার সমস্যাটি ন্যূনতম হওয়ায়) ছিল, এটি "যা" ইনস্টল করা হয়নি। গ্রেডলিউ ব্যবহার করে একটি প্রকল্প সংযুক্ত করা যা জাভা ইনস্টল করার জন্য কোনটি ./gradlew ব্যবহার করে যা সমস্যার সমাধান করেছে।


0

[উইন্ডোজ] যেমনটি ইতিমধ্যে বলা হয়েছে, দেখে মনে হচ্ছে .bat -file java.exe সন্ধান করার চেষ্টা করে %JAVA_HOME%/bin/java.exeতাই এটি খুঁজে পায় না কারণ পথটিতে binদু'বার পুনরাবৃত্তি করা হয়েছে। গ্রেড.বাট /binথেকে অতিরিক্ত সরান।

Gradle


0

বিল্ড.gradle এ লাইনগুলি নীচে যুক্ত করা আমার সমস্যার সমাধান করেছে।

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