Ошибка Maven: Возможно, вы работаете на JRE, а не в JDK?

Я никогда не работал с Maven раньше, и я следую инструкциям здесь. Когда я запускаю команду

mvn integration-test -Pamp-to-war 

Сначала он загрузил целую кучу зависимостей, и в итоге он показал,

 COMPILATION ERROR : [INFO] ------------------------------------------------------------- [ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK? [INFO] 1 error 

Я на ubuntu 13.04.

Если вы хотите, чтобы я вам сказал, дайте мне знать. Благодарю.

РЕДАКТИРОВАТЬ

Когда я делаю echo $JAVA_HOME я получаю /usr/lib/jvm/java-7-openjdk-i386/

Когда я делаю mvn -version

Я получил,

 Apache Maven 3.0.4 Maven home: /usr/share/maven Java version: 1.7.0_25, vendor: Oracle Corporation Java home: /usr/lib/jvm/java-7-openjdk-i386/jre Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "3.8.0-26-generic", arch: "i386", family: "unix" 

Кроме того, я обнаружил эту проблему, с которой столкнулся кто-то другой . Но я не уверен, как решить указанное решение?

Дальнейшие изменения.

 [email protected]:/usr/lib/jvm/java-7-openjdk-i386$ ls -l total 12 drwxr-xr-x 2 root root 4096 Sep 9 10:44 bin lrwxrwxrwx 1 root root 41 Jul 4 2013 docs -> ../../../share/doc/openjdk-7-jre- headless drwxr-xr-x 5 root root 4096 Oct 13 2013 jre drwxr-xr-x 4 root root 4096 Oct 13 2013 man 

Я столкнулся с той же проблемой с java 8 (ubuntu 16.04), пытаясь скомпилировать с помощью командной строки mvn .

Я проверил мои $JAVA_HOME , java -version и mvn -version . Кажется, все хорошо, указывая на /usr/lib/jvm/java-8-openjdk-amd64 .

Похоже, что java-8-openjdk-amd64 по умолчанию не установлен полностью и содержит только JRE (несмотря на его имя «jdk»).

Повторная установка JDK сделала трюк.

 sudo apt-get install openjdk-8-jdk 

Затем некоторые новые файлы и новые папки добавляются в /usr/lib/jvm/java-8-openjdk-amd64 а mvn снова может скомпилироваться.

По-видимому, для файла $ JAVA_HOME требуется файл tools.jar внутри папки lib. У меня не было папки lib, поэтому я переустановил мою команду jdk, используя команду

 apt-get install openjdk-7-jdk openjdk-7-doc openjdk-7-jre-lib 

Кроме того, эта ссылка может помочь некоторым людям.

Для меня это работало следующим образом. Посмотрите переменную среды JAVA_HOME, указываете ли вы на JRE или JDK.? Если это указывает на JRE, вы столкнетесь с вопросом «Возможно, вы работаете на JRE, а не в JDK». если это так изменит путь к JDK.

Модифицировав это, он работал для меня.

JAVA_HOME C: \ Program Files \ Java \ jdk1.8.0_31

Добавьте эти конфигурации в pom.xml

  ...  ...   maven-compiler-plugin 3.1  1.7 1.7 true C:\Program Files\Java\jdk1.7.0_79\bin\javac     ...  

Вот как я исправил свою проблему

right clik в проекте> свойства> Компилятор Java (выберите тот, который вы используете)

для меня это было 1,5, но я установил 1.8. поэтому я изменил его на 1.8 .. и voilla это сработало !.

Проверьте, есть ли / usr / bin “javac”. Если вы не установили JRE и вам нужно установить версию jdk dev, например, «java-1.8.0-openjdk-devel.x86_64»,

Просто добавьте более подробную информацию о том, где настроить. Основная причина в том, что настройка JAVA_HOME в переменной окружения должна указывать на правильное расположение JDK.

  1. Проверить систему -> Предварительные настройки системы
  2. Нажмите на переменную среды
  3. Добавить переменную JAVA_HOME -> “C: \ Program Files \ Java \ jdk1.8.0_141;”
  4. Изменить «путь» -> добавить% JAVA_HOME%; к существующему тексту.

Это из-за запуска jre, а не jdk, для установки jdk выполните следующие шаги

Установка java 8 в amazon linux / redhat

-> yum search java | grep openjdk yum search java | grep openjdk

-> yum install java-1.8.0-openjdk-headless.x86_64

-> yum install java-1.8.0-openjdk-devel.x86_64

-> update-alternatives --config java #pick java 1.8 и нажмите 1

-> update-alternatives --config javac #pick java 1.8 и нажмите 2

Спасибо

Щелкните правой кнопкой мыши на папке проекта (Maven one), выберите свойства и в окне свойств, снова выберите Java Compiler и посмотрите, что выбрано для уровня соответствия компилятора, и убедитесь, что он такой же, как и ваш jre. В моем случае у меня было 1.8, но 1.5 был выбран против уровня соответствия компилятора. После выбора 1.8 assembly была успешной без этой ошибки.

У меня была такая же ошибка, и у меня отсутствовала переменная User: JAVA_HOME и значение для SDK – «C: \ Program Files \ Java \ jdk-9.0.1» в моем случае

У меня была такая же проблема после установки пакета java-1.8.0-openjdk в AMI AWS Linux. Неправильное предположение, которое я сделал, состояло в том, что, поскольку файл закончился в openjdk, это была бы версия jdk. Это не тот случай.

На странице установки openjdk все понятно.

Пакет java-1.8.0-openjdk содержит только Java Runtime Environment. Если вы хотите разработать Java-программы, установите пакет java-1.8.0-openjdk-devel.

Если вы уже установили пакет java-1.8.0-openjdk, просто оставьте его и значение JAVA_HOME, если оно работает для JRE и установите пакет java-1.8.0-openjdk-devel, используя yum install java-1.8.0-openjdk-devel -y .

Я столкнулся с проблемой, хотя JAVA_HOME указывал на JDK. Понадобилось время, чтобы понять, почему он выбрасывает исключение.

Проблема заключалась в том, что я установил JAVA_HOME в качестве администратора на моем оконном компьютере. Вам нужно добавить переменную среды JAVA_HOME, указывающую на правый JDK, в настройки переменной среды вашего профиля пользователя .

Для решения моей проблемы в Linux нет JDK, я просто загружаю JDK и загружаю на сервер Linux и набираю: tar xvf jdk-8u45-linux-x64.tar.gz

  • "Неопределенная ссылка на" конструктор classа шаблона
  • Перерыв в модуле classа или разрыв по необработанным ошибкам (ошибка проверки ошибок VB6, настройка параметров в среде IDE)
  • Ошибка Java: незаконный запуск выражения
  • Определение манифеста размещенной сборки не соответствует ссылке на сборку
  • Generics компилируется и запускается в Eclipse, но не компилируется в javac
  • Что означает ошибка компиляции «Не могу найти символ»?
  • constexpr не работает, если функция объявлена ​​внутри classа
  • Почему C # ограничивает набор типов, которые могут быть объявлены как const?
  • Deserialize JSON с jacksonом в полиморфные типы - полный пример дает мне ошибку компиляции
  • Методы расширения должны быть определены в неэквивалентном статическом classе
  • Конструктор Java не компилируется должным образом
  • Давайте будем гением компьютера.