2012-02-26 3 views
2

Кажется, я не могу понять проблему. У меня есть простой проект, который я собираю для образовательных целей, но, несмотря ни на что, он не будет компилироваться. Я не могу понять, что мне не хватает. Ниже Makefile:javac cant find referenced class

SHELL := /usr/bin/env bash 
JFLAGS = -g -classpath "$(PWD)/src/tld/assignments/;$(PWD)/lib/;$(CLASSPATH)" 
JC = javac 
.SUFFIXES: .java .class 
.java.class: 
    $(JC) $(JFLAGS) $*.java 

CLASSES = src/tld/assignments/StoreDao.java \ 
src/tld/assignments/Store.java 

default: classes 

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

clean: $(RM) *.class 

StoreDao компилирует, но магазин, который ссылается StoreDao не делает, и говорит:

src/tld/assignments/Store.java:9: cannot find symbol 
symbol : class StoreDao 

Я попытался с косыми чертами классов и без, двоеточия, точки с запятой и т. д. - никакой разницы.

Специальное уведомление, потому что я знаю, что кто-то обязательно это скажет. Нет, я не хочу/не могу использовать Ant или Maven. Точка этого назначения - использовать GNU Make. (Я могу сделать это с Ant или Maven и т. Д., Это не проблема).

Еще одно замечание, на всякий случай, я рассмотрел аналогичные проблемы, отправленные в SO - ни один из них не является моим случаем (все остальные оказались синтаксической ошибкой или какой-то забвением на стороне плаката , что это не так).

Благодарим вас заблаговременно.

ответ

0

Довольно блестяще, несмотря на то, что javac игнорирует все соглашения при указании путей, он также несовместим с различными ОС, поэтому, похоже, что разделитель путей в Linux не является точкой с запятой - это двоеточие.

Конечно, официальное руководство никогда не упоминает, что, так как пользователи должны иметь знания предварительных условий перед запуском программы ... Вздох