it-swarm.asia

خطأ: لم يتم تعريف Java_HOME بشكل صحيح في تنفيذ maven

قمت بتثبيت Java وتعيين المسار إلى البيئة وعندما أقوم بتنفيذ echo $Java_HOME ، أحصل على الإخراج التالي:

/usr/lib/jvm/Java-7-Oracle/jre/bin/Java

لقد قمت أيضًا بتثبيت Apache-maven وتغيير ملف environment والآن يبدو كما يلي:

Java_HOME="/usr/lib/jvm/Java-7-Oracle/jre/bin/Java"
M2_HOME=/usr/local/Apache-maven/Apache-maven-3.0.5
M2=$M2_HOME/bin
MAVEN_OPTS="-Xms256m -Xmx512m"
PATH=$M2:$PATH

لكن عندما أقوم بتنفيذ mvn --version ، تلقيت تحذيرًا:

Error: Java_HOME is not defined correctly.
  We cannot execute /usr/lib/jvm/Java-7-Oracle/jre/bin/Java/bin/Java

لا يمكن معرفة سبب تكراره في النهاية /bin/Java/bin/Java

47
user3127896

على افتراض أنك تستخدم bash Shell وتثبيت Java مع مثبت Oracle ، يمكنك إضافة ما يلي إلى .bash_profile الخاص بك

export Java_HOME=$(/usr/libexec/Java_home)
export PATH=$Java_HOME/jre/bin:$PATH

سيؤدي هذا إلى انتقاء الرمز الصحيح Java_HOME كما هو محدد بواسطة مثبت Oracle وسيضعه أولاً في $PATH مع التأكد من العثور عليه.

أيضًا ، لا تحتاج إلى تغييره لاحقًا عند تحديث Java.

تصحيح

حسب التعليقات:

مما يجعلها مستمرة بعد إعادة تشغيل الكمبيوتر

فقط أضف هذه السطور في ملف تكوين Shell. (على افتراض أنها bash)

على سبيل المثال: .bashrc أو .bash_profile أو .profile (لـ ubuntu)

باستخدام تثبيت جافا مخصص

اضبط Java_HOME على المجلد الجذر لمسار تثبيت Java المخصص دون $().

مثال: Java_HOME=/opt/Java/openjdk

72
rbento

يجب أن يكون Java_HOME /usr/lib/jvm/Java-7-Oracle/jre/.

18
talex

نفتح محطة ونبحث عن موقع Java:

[email protected]:~ → whereis Java

Java:/usr/bin/Java/etc/Java/usr/bin/X11/Java/usr/share/Java /usr/share/man/man1/Java.1.gz

ما نبحث عنه هو/usr/bin/Java تستمر في سطر الأوامر للعثور على المسار المطلق ، لأن هذا ليس سوى رابط رمزي.

[email protected]:~ → ls -lah /usr/bin/Java

lrwxrwxrwx 1 root root 22 May 19 2015/usr/bin/Java ->/etc/بدائل/Java

[email protected]:~ → ls -lah /etc/alternatives/Java

lrwxrwxrwx 1 root root 39 dic 7 11:52/etc/بدائل/Java ->/usr/lib/jvm/Java-8-Oracle/jre/bin/Java

قمت بتعديل ملفي/etc/environment مع القيم التالية

PATH = "/ usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/Java-8-Oracle/jre/bin "Java_HOME ="/usr/lr/jvm/Java-8-Oracle/jre "

إذا كنت لا أريد إعادة تسجيل الدخول ، فيمكنني إعادة تحميل التغييرات باستخدام:

source /etc/environment 

وتشغيل mvn -version بشكل صحيح

[email protected]:~ → mvn -version

اباتشي مافن 3.0.5
مافن المنزل:/usr/share/maven
إصدار جافا: 1.8.0_77 ، البائع: Oracle Corporation
صفحة Java الرئيسية:/usr/lib/jvm/Java-8-Oracle/jre
الإعدادات المحلية الافتراضية: es_MX ، ترميز النظام الأساسي: UTF-8
اسم نظام التشغيل: "linux" ، الإصدار: "3.16.0-70-generic" ، القوس: "AMD64" ، العائلة: "unix"

13
Juan Manuel Garcia Carmona

$Java_HOME يجب أن يكون الدليل حيث تم تثبيت Java ، وليس أحد أجزائه:

export Java_HOME=/usr/lib/jvm/Java-7-Oracle
9
Mureinik

قد تحصل على هذا الخطأ بسبب عدة أسباب. لإصلاح هذا بسرعة ، يرجى اتباع الخطوات التالية ،

أولا العثور على موقع جافا. للحصول على قائمة بمنصات Java المثبتة لديك ، قم بتشغيل الأمر التالي من الجهاز:

$ Sudo update-alternatives --config Java

الآن قم بتعيين Java_HOME و PATH ،

$ export Java_HOME=<Java_home>

$ export PATH=$Java_HOME/jre/bin:$PATH

إنشاء الارتباط

$ Sudo ln -s <Java_home>/jre <Java_symlink_path>

عندما نأخذ قضيتك كمثال:

$ Sudo ln -s /usr/lib/jvm/Java-7-Oracle/jre /usr/lib/jvm/Java-7-Oracle/jre/bin/Java

سيؤدي الأمر أعلاه إلى إنشاء موقع symlink حيث يحاول النظام العثور عليه في مشكلتك.

وأخيرا القيام

$ mvn --version
5
tk_

يجب أن تأخذ الدليل بالكامل حيث تم تثبيت Java ، في حالتي:

export Java_HOME=/usr/Java/jdk1.8.0_31
2
trenixjetix

أولاً ، في وضع التطوير ، يجب عليك استخدام JDK بدلاً من JRE. ثانياً ، Java_HOME هو المكان الذي تقوم فيه بتثبيت Java وحيث تبحث جميع أطر العمل الأخرى عما يحتاجون إليه (JRE ، javac ، ...)

لذلك إذا قمت بتعيين

JAVA_HOME =/البيرة/ليب/JVM/جافا 7 أوراكل/جري/بن/جافا

عند تشغيل أمر "mvn" ، سيحاول Maven الوصول إلى Java عن طريق إضافة/bin/Java ، معتقدًا أن Java_HOME في الدليل الجذر لتثبيت Java.

لكن الإعداد

JAVA_HOME =/البيرة/ليب/JVM/جافا 7 أوراكل /

سوف Maven الوصول إلى إضافة بن/جافا ثم ستعمل على ما يرام.

2
Jad B.

قم بتعيين كما هو تصدير Java_HOME =/usr/Java/jdk1.8.0_31. وتشغيله مع Sudo سوف ينفذ ..

2
rohit sawant

يعمل هذا الحل بالنسبة لي ... فقط اكتب export PATH=$Java_HOME/jre/bin:$PATH في الجهاز الطرفي ثم شغل mvn -version وسيظهر الخطأ نفسه ولكن مع سجل مثل هذا

which: no javac in (/jre/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/puppetlabs/bin)
Warning: Java_HOME environment variable is not set.
Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T22:59:23+05:30)
Maven home: /opt/Apache-maven-3.2.5
Java version: 1.8.0_171, vendor: Oracle Corporation
Java home: /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.el7.x86_64", Arch: "AMD64", family: "unix"

الآن قم بنسخ المسار Java home أي /usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre في حالتي.

اكتب الآن ،

export Java_HOME=/usr/lib/jvm/Java-1.8.0-openjdk-1.8.0.171-8.b10.el7_5.x86_64/jre

والخطأ يحصل حل. ملاحظة: الصق المسار الخاص بك والذي يظهر بواسطة جهازك في سجل mvn عند تصدير Java_HOME.

1
Mohit Garg

استخدم هذين الأمرين (لنظام Java 8):

Sudo update-Java-alternatives --set Java-8-Oracle
Java -XshowSettings 2>&1 | grep -e 'Java.home' | awk '{print "Java_HOME="$3}' | sed "s/\/jre//g" >> /etc/environment
0
Xdg

يحدث بسبب السبب المذكور أدناه:

إذا رأيت البرنامج النصي mvn: فشل الرمز هنا ---

خطوات لتصحيح الأخطاء وإصلاحها:

الخطوة 1: افتح البرنامج النصي mvn /Users/Username/Apache-maven-3.0.5/bin/mvn (افتح باستخدام الأمر الأقل مثل: less /Users/Username/Apache-maven-3.0.5/bin/mvn)

الخطوة 2: معرفة الرمز أدناه في البرنامج النصي:

  if [ -z "$JAVACMD" ] ; then
  if [ -n "$Java_HOME"  ] ; then
    if [ -x "$Java_HOME/jre/sh/Java" ] ; then
      # IBM's JDK on AIX uses strange locations for the executables
      JAVACMD="$Java_HOME/jre/sh/Java"
    else
      JAVACMD="$Java_HOME/bin/Java"
    fi
  else
    JAVACMD="`which Java`"
  fi
fi

if [ ! -x "$JAVACMD" ] ; then
  echo "Error: Java_HOME is not defined correctly."
  echo "  We cannot execute $JAVACMD"
  exit 1
fi

Step3: يحدث لأنه لم يتم تعيين متغير JAVACMD. لذلك يعرض الخطأ.

ملاحظة: لإصلاحها

export JAVACMD=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/bin/Java

export Java_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/

المفتاح: إذا كنت تريد أن تكون دائمة emacs .profile

قم بنشر الأوامر واضغط على Ctrl-x Ctrl-c (حفظ-المخازن المؤقتة-محطة القتل).

0
Shubham Verma

إذا كنت تستخدم نظام التشغيل mac ، فيجب تغيير export Java_HOME=/usr/libexec/Java_home إلى export Java_HOME=$(/usr/libexec/Java_home). خطوات للقيام بذلك:

 $ vim .bash_profile

 export Java_HOME=$(/usr/libexec/Java_home)

 $ source .bash_profile

حيث /usr/libexec/Java_home هو مسار jvm الخاص بك

0
ishanbakshi