2017-01-13 2 views
2

J'essaie de créer un fichier compile.bat en utilisant les classes suivantes: HumanTest (méthode principale), Man, Food. Voici le code pour les 3 classes. Dans cette situation, Food est déjà compilé et je n'ai pas le fichier .java pour cela.Définition d'un chemin de classe dans le fichier bat

package human.man; 

public class Man { 

    private String name; 
    private Food f; 

    public Man(String name, Food f) { 
     this.name = name; 
     this.f = f; 
    } 
} 

public class Food { 
    private String foodName; 

    public Food(String name) { 
     foodName = name; 
    } 
} 

import human.man.*; 
public class HumanTest { 
    public static void main (String[] args) { 
     Food f = new Food("ckt"); 
     Man m = new Man("joe", f); 
    } 
} 

En compile.bat, je lance le code suivant javac -cp classes;src HumanTest.java Mais je reçois l'erreur que la classe alimentaire ne peut pas être trouvé. Je me demande pourquoi c'est ainsi même si j'ai déjà défini le classpath pour Food.class. Voici le lien pour les fichiers: https://www.dropbox.com/s/2wussnm55tbnh3t/Question.zip?dl=0

EDIT: Voici le diagramme de l'arbre, faites-moi savoir si je l'ai dessiné de manière incorrecte!

--Question 
    |--compile.bat 
    |--HumanTest.java 
    |--classes 
    |--Food.class 
    |--src 
    |--human 
     |--man 
      |--Man.java 
+0

Pourriez-vous schématiser les répertoires que vous utilisez, et où sont vos fichiers '.java' et' .class'? –

+0

Mettez-le dans un pot, peut-être? Qui distribue les fichiers .class de toute façon? – ossobuko

Répondre

0

Le problème n'est pas lié aux fichiers batch, mais uniquement à l'organisation de vos classes. Vous ne pouvez pas importer un package par défaut à partir d'un package nommé, ni utiliser une classe figurant dans le package par défaut d'une classe figurant dans un package nommé.

Dans la classe human.man.Man, vous essayez d'utiliser la classe Food qui se trouve dans le package par défaut. Essayez de déplacer les aliments dans un paquet nommé à la place.

+0

Si je n'ai pas le fichier Food.java à éditer, cela signifie-t-il que je ne serai pas capable de le compiler du tout? – timothyjoseph

+0

Vous pourrez le compiler, mais seulement si vos classes sont elles-mêmes dans l'espace de noms par défaut. C'est pourquoi il n'est pas recommandé d'utiliser l'espace de noms par défaut. La personne qui a écrit Food.class vous oblige à placer vos classes dans l'espace de noms par défaut si vous voulez utiliser sa classe. Ce qui n'est pas gentil. –