2017-04-09 6 views
1

Je rencontre des problèmes lors de la compilation d'une affectation Java RMI dans des packages avec l'interface de ligne de commande sous Windows 10 (impossible d'utiliser Eclipse ou un autre IDE). J'ai besoin de compiler et d'exécuter deux fichiers .java - RemoteBankServer.java et RemoteBankClient.java. Ces deux fichiers utilisent d'autres classes .java (Bank.java, RemoteBankImpl.java, RemoteBank.java, Account.java et sous-classes de Account.java). Auparavant, avec tous mes fichiers dans un dossier, je pourrais facilement compiler et exécuter mon serveur et le client avec deux fenêtres de ligne de commande, avec:Java Compilant l'application serveur/client RMI dans plusieurs paquets

javac RemoteBankServer.java 
java RemoteBankServer 

et même pour RemoteBankClient. Maintenant que je l'ai testé que mon code fonctionne très bien, je dois les organiser en paquets java, suivant cette structure:

- package name: edu.btp400.w2017.client 
    class name: RemoteBankClient 

- package name: edu.bt400.w2017.server 
    class names: RemoteBankImpl, RemoteBankServer 

- package name: edu.btp400.w2017.common 
    class name: RemoteBank (and all other classes, like Bank, Account, etc.) 

J'ai créé ces dossiers (edu/btp400/w2017 /) et ont placé les classes appropriées dans chaque dossier, mais je ne peux pas le compiler. Pour l'instant, je ces deux lignes en haut de chaque fichier .java:

package edu.btp400.w2017.server; //or .common or .client 
import edu.btp400.w2017.*; 

Mais je reçois encore des erreurs de compilation lors de la tentative de compiler RemoteBankServer.java (dans le dossier du serveur), comme celui-ci (ce qui est bizarre, parce que RemoteBankImpl est dans le même dossier et RemoteBankServer:

RemoteBankServer.java:40: error: cannot find symbol 
        RemoteBankImpl b1 = new RemoteBankImpl(); 
              ^
symbol: class RemoteBankImpl 
location: class RemoteBankServer 

ainsi que des erreurs similaires en disant que compte et d'autres classes ne se trouve que je l'ai regardé différents postes sur la façon de compiler avec les packages Java. en utilisant l'interface de ligne de commande, mais je ne l'ai pas obtenu de travail.Toute aide serait grandement appréciée.Parole pour le long message

Edit: est la commande je compiler ci-dessus (après le stockage des fichiers dans différents packages): J'ai essayé dans le dossier contenant edu, et a obtenu 27 erreurs de compilation:

javac -cp . edu/btp400/w2017/server/RemoteBankServer.java 

et ce dans le dossier du serveur, et a obtenu 15 erreurs de compilation:

javac RemoteBankServer.java 

Edit: Merci à EJP utilisateur, j'ai découvert que je devais inclure les sous-dossiers dans mes déclarations d'importation: au lieu de simplement import edu.btp400.w2017.*; que je devais faire:

import edu.btp400.w2017.common.*; 
import edu.btp400.w2017.server.*; 
import edu.btp400.w2017.client.*; 
+0

Quelle commande avez-vous utilisé pour compiler? – prasanth

+0

Avez-vous inclus des déclarations de package dans vos fichiers source? – prasanth

+0

@prasanth Oui, j'ai inclus la déclaration de paquet (paquet edu.btp400.w2017.server; (ou n'importe quel dossier dans lequel il se trouve)) dans chaque fichier source. Également modifié le message avec mes commandes. Merci. – zzzzz

Répondre

0
import edu.btp400.w2017.*; 

Cela n'importe pas toutes les classes dans les sous-paquets indiqués par *. L'astérisque ne fait référence qu'aux classes.

Vous devez importer tous les packages individuellement.

+0

merci de votre réponse. Je mets ceci en haut de mes fichiers .java: 'import edu.btp400.w2017.common. *;' import edu.btp400.w2017.server. *; import edu.btp400.w2017.client.*; Maintenant, si je compile mon RemoteBankServer et RemoteBankClient de l'extérieur du paquet (le dossier un niveau au-dessus de edu), il compile et s'exécute très bien. Mais si j'essaie de compiler depuis edu (ou l'un des sous-répertoires), ce n'est pas le cas. Est-ce que c'est comme ça que je suis censé être - je peux seulement compiler depuis l'extérieur du paquet? Merci. – zzzzz