2010-10-31 5 views
2

Здравствуйте, я новичок в разработке Java. Я попытался написать Makefile, который должен быть работоспособным в Linux:Makefile for Java не может найти пакет

JFLAGS = -g 

JC = javac 

.SUFFIXES: .java .class 

.java.class: 

$(JC) $(JFLAGS) $*.java 



Heap.class: FibonacciHeap.java \ 
    FileOperation.java \ 
    MinLeftistTree.java \ 
    RandomPermutation.java \ 
    Heap.java 
default: classes 
classes: $(CLASSES:.java=.class) 
clean: 

$(RM) *.class 

В моем предположении, Heap.class должен зависеть от всех других файлов Java. Кроме того, основной файл должен быть в нем также.

Однако, я не могу заставить его работать, он показывает

Heap.java:3: package heap.FibonacciHeap does not exist 

и не может найти другую ссылку из другого файла Java, такие как

Heap.java:61: cannot find symbol symbol : variable RandomPermutation location: class heap.Heap 
     list = RandomPermutation.GetList(listnum[route]); 

Эта программа прекрасно работает в затмении. Есть ли у вас какие-либо предложения?

Я новичок, и я могу совершить некоторую ошибку .... и я мало знаю о компиляторе и делаю файл. Если вы можете указать на это, я буду благодарен!

+2

Возможно, вы захотите посмотреть на Ant. Обычно он используется вместо 'make' для компиляции и упаковки кода Java. –

+0

К сожалению .. это проект класса, и его необходимо завершить командой makefile – Seen

ответ

0

Я не вижу, где вы устанавливаете CLASSPATH. Мне все равно, что это файл make или Ant - javac.exe и java.exe ожидают, что CLASSPATH будет установлен при запуске. Где твой?

Я считаю, что вы должны установить CLASSPATH в make-файле, прежде чем запускать javac.exe.

Я бы забыл про make (и Eclipse) на мгновение. Можете ли вы скомпилировать этот проект и запустить его в командной оболочке? Если вы не можете, я бы сказал, что вы не должны полагаться на какие-либо инструменты, которые помогут вам.

Чтение this может быть полезно.

Действительно ли это требование для выполнения этого задания? Как профессор узнает, что вы использовали Eclipse или make или Ant или командную оболочку для компиляции файлов .java в .class?

+0

Благодарим вас за ваш быстрый ответ. Нужно ли включать набор CLASSPATH в файл make или в исходный файл java? Есть ли у вас другая документация, которая может мне помочь? – Seen

+0

@Seen - CLASSPATH - это переменная системной среды, которая должна быть установлена ​​перед запуском вашей программы или при запуске программы с аргументом '-cp'. Просто введите 'java -help' в свой терминал. – Jeremy

+0

Я попытаюсь найти способ увидеть, могу ли я поместить переменную окружения classpath в файл make. Еще раз спасибо за обновление. – Seen