我的 java 项目使用了一些 apache commons 库。我希望能够在 unix 中运行我的程序,所以我制作了一个 makefile 来为我编译它。我的项目有 4 个 Java 类和 4 个外部库 (.jar)。在我的目录中,我有四个 .Java 文件和一个名为“lib”的文件夹,其中包含我的 .Jar 文件。这是我的制作文件:
JFLAGS = -g
JC = javac -sourcepath / -classpath lib/commons-httpclient-3.1.jar:lib/commons-io-2.4.jar:lib/commons-codec-1.9.jar:lib/commons-logging-1.1.3.jar
.SUFFIXES: .java .class
.java.class:
$(JC) $(JFLAGS) $*.java
CLASSES = \
SubmissionDriver.java \
FileAndArgs.java \
hashConverter.java \
InvalidAgeException.java
default: classes
classes: $(CLASSES:.java=.class)
clean:
$(RM) *.class
这是我的错误消息:不过,我收到了 14 条与实际类文件相关的错误消息。以下是一些示例:
SubmissionDriver.java:74: error: cannot find symbol
public static void httpSend() throws HttpException, IOException{
^
symbol: class HttpException
location: class SubmissionDriver
SubmissionDriver.java:75: error: cannot find symbol
HostConfiguration hf=new HostConfiguration();
^
symbol: class HostConfiguration
location: class SubmissionDriver
SubmissionDriver.java:75: error: cannot find symbol
HostConfiguration hf=new HostConfiguration();
^
symbol: class HostConfiguration
location: class SubmissionDriver
SubmissionDriver.java:77: error: cannot find symbol
PostMethod post = new PostMethod("myurl");
^
它还在 14 条错误消息的底部指出了这一点:
14 errors
make: *** [SubmissionDriver.class] Error 1
最佳答案
- Make 并不是一个好的 Java 构建工具。也许尝试 ant (或 Maven, 或 Gradle)
- makefile 的结构方式是为每个 java 类调用“javac”命令。如果您的 Java 类相互依赖,这将不起作用
确保此行之前有一个制表符
$(JC) $(JFLAGS) $*.java
关于Java:如何向makefile添加多个外部库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23280314/