【问题标题】:Java: How to add multiple external libraries to makefile?Java:如何将多个外部库添加到makefile?
【发布时间】:2014-04-24 21:34:59
【问题描述】:

我的 java 项目使用了一些 apache 公共库。我希望能够在 unix 中运行我的程序,所以我制作了一个 makefile 来为我编译它。我的项目有 4 个 Java 类和 4 个外部库 (.jars)。在我的目录中,我有四个 .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

【问题讨论】:

  • 也许是时候使用专为 Java 设计的构建器了,比如 Ant、Maven 或 Gradle。这些都与您的 IDE 集成,并且可以由您的 IDE 更新。
  • 我确实认为这已经在您的 IDE 中工作了。您确定代码中的 import 语句正确吗?
  • 是的,所有代码在 eclipse 中都能正常工作
  • eclipse 应该有一个 ant、maven 和 gradle 插件,它应该能够为你生​​成构建器。
  • 是的,我现在正在调查,我以前从未使用过 makefile 或那些插件,所以我希望避免它,但似乎这就是我必须做的。跨度>

标签: java makefile external libraries


【解决方案1】:
  1. Make 不是一个好的 Java 构建工具。也许尝试蚂蚁(或Maven, 或 Gradle)
  2. makefile 的结构方式是为每个 java 类调用一个“javac”命令。如果您的 java 类相互依赖,这将不起作用
  3. 确保在此行之前有一个制表符

    $(JC) $(JFLAGS) $*.java

【讨论】:

  • 确保您也仔细检查了 $(RM) 之前的标签。当从 windows 移动到 *nix 时,make 文件往往会中断
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多