【问题标题】:Could not find or load main class using makefile无法使用 makefile 找到或加载主类
【发布时间】:2013-06-07 18:11:20
【问题描述】:

我搜索了建议的答案,但找不到适合我的答案。 Makefile 编译任何错误的所有内容,但在尝试执行我的 java 程序时,我收到错误Could not find main class bin.Program.class 即使尝试单独编译程序,也会弹出相同的错误。 我有多个.java 文件,其中有不同的类,我在lib/ 目录中使用一个库(.jar)文件。没有它,java 编译器会给出多个错误。

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 有主类。

【问题讨论】:

  • 您使用什么命令来调用您的应用程序?另外,您是否考虑过 Ant 而不是 make?
  • 我尝试使用java bin.Program.class -cp binjava bin.Program.class -cp lib 都给出了与上述相同的错误。我的任务是做一个像这样的make文件。

标签: java class makefile


【解决方案1】:

您应该在 bin 目录中并使用

java -cp ./ Program

bin 只是一个文件夹,所以不要把它放进去。而且 Program.class 不是类的名称,Program 是。

【讨论】:

  • 在 bin 文件夹中可以使用 java -cp ./:../lib/* Program。我该怎么做才能在我的 Makefile 中起作用?
  • 对不起,我不知道 makefile。所以你自己在那里,也许你可以问一个单独的问题:)
  • 您的 Makefile 与您调用程序的方式几乎没有关系。 @Jay Smith 的回答是正确的做法。
【解决方案2】:

给出的答案确实很有帮助,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}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-01-05
    • 2015-02-06
    • 2018-10-10
    • 2014-09-15
    • 2015-09-10
    • 2015-08-22
    相关资源
    最近更新 更多