Проверка, установлена ​​ли Java в make-файле - PullRequest
2 голосов
/ 05 августа 2010

Я пишу make-файл, который компилирует и запускает Java-программу, но он будет работать на разных платформах, поэтому я хочу, чтобы make-файл сначала определил, установлена ​​ли Java IS, и только потом он скомпилирует и запустит.java файл.

Как мне поступить?

Ответы [ 5 ]

3 голосов
/ 06 августа 2010

Я пытаюсь понять, что вы пытаетесь сделать, и я догадываюсь, что вы не будете придерживаться принятых практик, что сделает ваш процесс деликатным и хрупким.

«Принятый»способ компиляции и запуска Java - использовать Ant или Maven, а затем собирать их на сборочном компьютере.Вам не нужно eclipse или какие-либо другие инструменты для создания только Java JDK или SDK (имена взаимозаменяемы) и ant или maven на вашем компьютере.

Вы бы поместили структуру каталогов Java-кода на машину изапустите его через ant или maven, а затем получите файлы классов или JAR, EAR, WAR или все, что вы разрабатываете.

Правильный способ развертывания - это обычно развертывание файлов классов на компьютере, на котором вы работаете.будет работать, что, в свою очередь, потребует JRE (Java Runtime Environment).Причина для файлов JAR состоит в том, чтобы взять структуру каталогов файлов классов и поместить ее в один файл.Так что это хорошая вещь, которую легко развернуть.

Так как у вас есть контроль над "машиной сборки", вы можете убедиться, что у вас есть и JDK, и муравей, чтобы иметь возможность компилировать.Задача состоит в том, чтобы на машинах, которые вы развертываете, была установлена ​​JRE.

Чтобы убедиться, что машины имеют JRE.У вас есть несколько вариантов.

  1. Используйте JNLP, и установщик предложит пользователю загрузить соответствующую JRE, если у него его нет.
  2. Скомпилируйте ваш код в Native Code с помощью GCJ (Есть некоторые проблемы - делаетне работает со всем кодом)
  3. Предложите своим пользователям установить Java другим способом.
1 голос
/ 24 августа 2010

Если вы не возражаете ограничивать себя GNU Make (я не думаю, что это переносимо), вы можете сделать что-то, используя функцию $(shell) и команду which:

JAVAC := $(shell which javac)

ifeq ($(JAVAC),)
$(warning No javac found!)
endif
0 голосов
/ 30 декабря 2010

Интересно, это действительно сложные способы решения очень простой задачи.
Даже если Java установлена ​​и не добавлена ​​в путь к среде, у вас возникнут проблемы, так почему бы не выполнить простую проверку:

String check = System.getenv("PATH");  

Теперь отфильтруйте эту строку проверки для Java. Если вы найдете его, значит, он у вас есть, если вы ничего не нашли, попросите пользователя установить Java.

РЕДАКТИРОВАТЬ: я не знаю C, поэтому я написал команду Java. Идея в том, что вам нужно проверить переменную окружения, чтобы убедиться, что у вас есть Java на конечном пользователе.

0 голосов
/ 05 августа 2010

Проверьте, можно ли запустить исполняемый файл "java" (например, с -version), и потерпите неудачу, если нет.

Также обратите внимание, что компилятор java (javac) не помещается в PATH по умолчанию установщиком JDK. Если вам нужен компилятор, ваш самый простой подход - включить и использовать Eclipse-компилятор ecj, который можно скачать отдельно с eclipse.org.

0 голосов
/ 05 августа 2010

Рассмотрите возможность объединения файла jar с кодом java.

Makefile - это просто исполняемый скрипт, так что вы можете проверить, находится ли java в $ PATH исполняемой среды.

Вы также можете сделать что-то вроде:

#!/bin/bash
java>/dev/null
if [ $? -eq 0 ]
then 
   echo "java is installed"
else
   echo "java is not installed"
fi

Но это, опять же, проверяет, существует ли java в $ PATH сценария.

...