【问题标题】:Makefile for Java cannot find packageJava的Makefile找不到包
【发布时间】:2010-10-31 14:24:26
【问题描述】:

您好,我是 Java 开发的新手。我尝试编写一个可以在 Linux 中运行的 makefile:

JFLAGS = -g

JC = javac

.SUFFIXES: .java .class

.java.class:

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



Heap.class: FibonacciHeap.java \
    FileOperation.java \
    MinLeftistTree.java \
    RandomPermutation.java \
   Heap.java 
default: classes
classes: $(CLASSES:.java=.class)
clean:

 $(RM) *.class

在我的假设中,Heap.class 应该依赖于所有其他 java 文件。另外,主文件也应该在里面。

但是,我无法让它运行,它显示

    Heap.java:3: package heap.FibonacciHeap does not exist

并且无法从其他java文件中找到其他引用,例如

Heap.java:61: cannot find symbol symbol  : variable RandomPermutation location: class heap.Heap
       list = RandomPermutation.GetList(listnum[route]);

这个程序在eclipse中运行良好。你有什么建议吗?

我是新手,我可能会犯一些错误......而且我对编译器和制作文件知之甚少。如果您能指出我将不胜感激!

【问题讨论】:

  • 你可能想看看 Ant。它通常用来代替make 来编译和打包Java 代码。
  • 不幸的是..这是一个类项目,需要用makefile命令完成

标签: java makefile


【解决方案1】:

我看不到您在哪里设置了 CLASSPATH。我不在乎它是 make 文件还是 Ant - javac.exe 和 java.exe 希望在它们运行时设置 CLASSPATH。你的呢?

我相信你必须在 makefile 中设置 CLASSPATH,然后再运行 javac.exe。

我会暂时忘记 make(和 Eclipse)。你能让这个项目在命令行中编译和运行吗?如果你不能,我会说你不应该依靠任何工具来帮助你。

阅读this 可能会有所帮助。

make 真的是完成这项任务的必要条件吗?教授如何知道您使用 Eclipse 或 make 或 Ant 或命令 shell 将 .java 编译为 .class 文件?

【讨论】:

  • 首先非常感谢您的快速回答。我需要在 make 文件或我的 java 源文件中包含设置的 CLASSPATH 吗?您还有其他可以帮助我的文档参考吗?
  • @Seen - CLASSPATH 是一个系统环境变量,需要在运行程序之前设置,或者在使用-cp 参数运行程序时设置。只需在终端中输入java -help
  • 我会想办法看看能不能把classpath的环境变量放到make文件里。再次感谢您的更新。
猜你喜欢
  • 2017-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-22
  • 2017-08-09
  • 1970-01-01
相关资源
最近更新 更多