J'ai deux classes Owning et OwningAccessor. Les fichiers sont dans le même répertoire.
public class Owning {
String _name = "";
public void printBanner()
{
}
public void printOwning(double amount)
{
printBanner();
//print details
System.out.println("name:" + _name);
System.out.println("amount:" + amount);
}
}
public class OwningAccessor {
public void access()
{
Owning o = new Owning();
o.printOwning(500);
}
}
Lorsque j'ai essayé de compiler OwningAccessor
avec javac -cp . OwningAccessor.Java
, j'ai eu une erreur de compilation.
symbol : class Owning
location: class smcho.OwningAccessor
Owning o = new Owning();
^
OwningAccessor.Java:6: cannot find symbol
symbol : class Owning
location: class smcho.OwningAccessor
Owning o = new Owning();
^
Quel est le problème avec cela? Le code se compile bien sous Eclipse IDE.
Ok, supposons que le code soit distribué dans les fichiers comme suit
myproject
├── out
└── src
├── OwningAccessor.Java
└── Owning.Java
Accédez à l'invite de commande et changez le répertoire en myproject
. Une fois la commande suivante lancée:
javac -d out -sourcepath src src/OwningAccessor.Java
Je viens de le tester et ça fonctionne très bien. Vos classes compilées seront situées dans le dossier out
:
.
├── out
│ ├── OwningAccessor.class
│ └── Owning.class
└── src
├── OwningAccessor.Java
└── Owning.Java
La compilation d'une classe déclenchera la compilation de toutes les autres classes dépendantes. Le compilateur les recherchera automatiquement dans le dossier src
.
Assurez-vous de compiler à la fois Owning.Java et OwningAccessor.Java, comme suit:
javac -cp . Owning.Java OwningAccessor.Java
Eclipse compile tous les fichiers nécessaires pour vous, d’où leur efficacité.
Essayez de créer un exemple de chemin source correct:
javac -d temp -sourcepath c:\awork\JavaProjects\singleton\src\c:\JavaProjects\singleton\src\com\company\MySingleton.Java javac - d temp -sourcepath c:\awork\JavaProjects\singleton\src\c:\JavaProjects\singleton\src\com\company\Main.Java
Dans "temp" nous allouons des ressources et avec -sourcepath nous indiquons où sont les fichiers .Java.
Donc, dans un répertoire nommé D:\Automation, il y a un fichier Demo.Java qui renvoie cette erreur, dans cmd alors que vous êtes dans D:\Automation, vous devez: - 1) cd .. // will sortez du répertoire Automation. En D:> 2) javac Automation\Demo.Java
cela va compiler votre fichier - Demo.Java