2013-06-07 3 views
1

Я искал предложенные ответы, но мне не удалось найти рабочий ответ для меня. Makefile компилирует все с любой ошибкой, но при попытке выполнить мою java-программу я получаю ошибку Could not find main class bin.Program.class Даже если вы пытаетесь скомпилировать программу, появляется одна и та же ошибка. У меня есть несколько файлов .java, в которых есть разные классы, и я использую один файл библиотеки (.jar) в каталоге lib/. Без него java-компилятор дает несколько ошибок.Не удалось найти или загрузить основной класс с помощью makefile

SRC = src 
LIBDIR = lib 
BIN = bin 
JAVA_FILES=${wildcard ${SRC}/*.java} 
CLASS_FILES=${JAVA_FILES:${SRC}/%.java=${BIN}/%.class} 
CLASSPATH="${LIBDIR}/*" 
all: run 
run: ${CLASS_FILES} 
    java ${CLASS_FILES} -cp ${CLASSPATH} 
${CLASS_FILES}: ${JAVA_FILES} 
    javac $^ -d ${BIN} -cp ${CLASSPATH} 

Eclipse компилирует и запускает программу отлично, а Program.java имеет основной класс.

+1

Какую команду вы используете для вызова приложения? Кроме того, вы считали Ant вместо make? – stepthom

+0

Я попытался использовать 'java bin.Program.class -cp bin' и' java bin.Program.class -cp lib' обе givin ту же ошибку, что и упоминалось. Мое назначение - сделать файл make, подобный этому. –

ответ

2

Вы должны быть внутри каталога бен и использовать

java -cp ./ Program 

бункер просто папка, так что не положить, что в. И Program.class это не название класса, Программа ,

+0

В папке bin это работает 'java -cp ./:../lib/* Program'. Что я могу сделать, чтобы это работало в моем Makefile? –

+0

Извините, я не знаю make-файлов. Итак, вы сами по себе, может быть, вы можете задать отдельный вопрос об этом :) –

+1

Ваш Makefile имеет мало общего с тем, как вы вызываете свою программу. Ответ Джэй Смита - правильный способ сделать это. – stepthom

0

С ответом дал, это действительно помогло, и Makefile теперь выглядит и работает:

SRC = src 
LIBDIR = lib 
BIN = bin 
JAVA_FILES=${wildcard ${SRC}/*.java} 
CLASS_FILES=${JAVA_FILES:${SRC}/%.java=${BIN}/%.class} 
CLASSPATH="${LIBDIR}/*" 
all: run 
run: ${CLASS_FILES} 
    java -cp ${BIN}:${LIBDIR}/* Program 
${CLASS_FILES}: ${JAVA_FILES} 
    javac $^ -d ${BIN} -cp ${CLASSPATH} 
Смежные вопросы