2013-04-29 2 views
1

У меня есть проект, который я создал с помощью eclipse. Теперь я хочу скопировать этот проект на свой Linux-компьютер, чтобы его компилировать и запускать.Запуск make-файла Java

Для этого я хочу создать make-файл для автоматической компиляции и запуска.

Я уже создал make-файл, и он может скомпилировать мой проект. Но теперь он должен начать мою программу после компиляции, и я не знаю, как это сделать.

Я хочу напечатать «make», и он должен скомпилировать источник, и после этого он должен начать мой основной автоматически. На данный момент у меня есть shellscript, который делает следующее.

make 
java Main 

Я уже пытался запустить «make run», но я получаю сообщение об ошибке.

No rule to make target 'Main', needed by 'run'. 

Это мой файл Makefile.

JFLAGS = -g 
JC = javac 
JVM= java 
FILE= 
.SUFFIXES: .java .class 
.java.class: 
    $(JC) $(JFLAGS) $*.java 
CLASSES = \ 
    Main.java \ 
    Class1.java \ 
    Class2.java \ 
    Class3.java \ 
    Class4.java 

MAIN = Main 

default: classes 

classes: $(CLASSES:.java=.class) 

run: $(MAIN).class 
    $(JVM) $(MAIN) 

clean: 
    $(RM) *.class 
+5

Использование сделать для создания Java-программ просто злополучный подход. Это может работать для очень простых проектов, но вы никогда не получите зависимостей, если у вас есть больше классов, классов в пакетах, классов с внутренними классами и т. Д. Сделайте свою услугу и потратите некоторое время на изучение Maven или Ant. И btw: нет причин для компиляции ваших источников в Linux (если только не для удовольствия и прибыли), просто используйте скомпилированные классы из окна окна! –

+0

Также: Eclipse может экспортировать файл сборки Ant для вас, который будет строить ваш проект и скомпилировать его в один файл jar. На самом деле нет необходимости когда-либо использовать make с java – MTilsted

ответ

1

Вам нужно добавить classes, а не Main.class как зависимость для бега, так как вы не определили правила для Main.class, то есть это должно работать:

run: classes 
    $(JVM) $(MAIN)