2 Stimmen

Makefile für Java kann Paket nicht finden

Hallo, ich bin neu in der Java-Entwicklung. Ich habe versucht, ein Makefile zu schreiben, das unter Linux lauffähig sein soll:

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

Meiner Meinung nach sollte Heap.class von allen anderen Java-Dateien abhängig sein. Außerdem sollte die Hauptdatei ebenfalls darin enthalten sein.

Ich kann es jedoch nicht zum Laufen bringen, es zeigt

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

und kann den anderen Verweis in einer anderen Java-Datei nicht finden, wie z. B.

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

Dieses Programm läuft gut in Eclipse. Haben Sie irgendwelche Vorschläge?

Ich bin neu und ich könnte einige Fehler begehen....und ich weiß nicht viel über Compiler und Make-Datei. Wenn Sie darauf hinweisen können, werde ich dankbar sein!

0voto

duffymo Punkte 298898

Ich sehe nicht, wo Sie CLASSPATH eingestellt haben. Es ist mir egal, ob es sich um eine Make-Datei oder Ant handelt - javac.exe und java.exe erwarten, dass der CLASSPATH gesetzt ist, wenn sie ausgeführt werden. Wo ist Ihrer?

Ich glaube, Sie müssen CLASSPATH im Makefile setzen, bevor Sie javac.exe ausführen.

Ich würde Make (und Eclipse) für einen Moment vergessen. Können Sie dieses Projekt kompilieren und in einer Befehlsshell ausführen? Wenn Sie das nicht können, sollten Sie sich nicht auf irgendwelche Tools verlassen, die Ihnen helfen.

Lesen ce könnte hilfreich sein.

Ist Make wirklich eine Voraussetzung für die Erfüllung dieser Aufgabe? Woher wird der Professor wissen, dass Sie Eclipse oder make oder Ant oder command shell verwendet haben, um Ihre .java- zu .class-Dateien zu kompilieren?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X