2010-10-31 15 views
2

Bonjour, je suis nouveau dans le développement de Java. J'ai essayé d'écrire un makefile qui devrait être runnable sous Linux:Makefile pour Java ne peut pas trouver le paquet

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 

Dans mon hypothèse, Heap.class devrait dépendre de tous les autres fichiers java. De plus, le fichier principal devrait également s'y trouver.

Cependant, je ne peux pas courir, il montre

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

et ne peut pas trouver l'autre référence d'un autre fichier java, comme

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

Ce programme fonctionne très bien dans Eclipse. Avez-vous des suggestions?

Je suis nouveau et je pourrais commettre une erreur .... et je ne sais pas grand chose sur le compilateur et le fichier. Si vous pouvez le signaler, je serai reconnaissant!

+2

Vous voulez probablement regarder Ant. Il est généralement utilisé à la place de 'make' pour compiler et empaqueter du code Java. –

+0

Malheureusement..il s'agit d'un projet de classe et il doit être terminé avec la commande makefile – Seen

Répondre

0

Je ne vois pas où vous définissez CLASSPATH. Je me fiche que ce soit un fichier make ou Ant-javac.exe et java.exe s'attendent à ce que le CLASSPATH soit défini lors de leur exécution. Où est le tien?

Je crois que vous devez définir CLASSPATH dans le fichier makefile, avant d'exécuter javac.exe. J'oublierais make (et Eclipse) pour un instant. Pouvez-vous compiler ce projet et l'exécuter dans un shell de commande? Si vous ne pouvez pas, je dirais que vous ne devriez pas vous appuyer sur des outils pour vous aider.

Lecture this peut être utile.

Est-ce que c'est vraiment une exigence pour remplir cette mission? Comment le professeur sait-il que vous avez utilisé Eclipse ou make ou Ant ou shell de commande pour compiler vos fichiers .java en .class?

+0

Merci beaucoup pour votre réponse rapide d'abord. Dois-je inclure l'ensemble CLASSPATH dans le fichier make ou dans mon fichier source java? Avez-vous d'autres références de documents qui peuvent m'aider? – Seen

+0

@Seen - Le CLASSPATH est une variable d'environnement système qui doit être définie avant d'exécuter votre programme, ou lorsque vous exécutez votre programme avec l'argument '-cp'. Il suffit de taper 'java -help' dans votre terminal. – Jeremy

+0

Je vais essayer de trouver un moyen de voir si je peux mettre la variable d'environnement de classpath dans le fichier make. Merci encore pour votre mise à jour. – Seen