javac не может найти указанный класс - PullRequest
2 голосов
/ 26 февраля 2012

Кажется, я не в состоянии понять проблему.У меня есть простой проект, который я собрал для образовательных целей, но, несмотря ни на что, он не будет компилироваться.Я не могу понять, чего мне не хватает.Ниже приведен make-файл:

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 компилируется, а Store, который ссылается на StoreDao, не делает и говорит:

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

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

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

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

Заранее спасибо.

1 Ответ

0 голосов
/ 27 февраля 2012

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

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

...