2017-08-02 1 views
0

Je veux compiler un tas de fichiers .java avec une bibliothèque .jar fichier. Suite à ce topic, mon précédent programme d'interface graphique fonctionne bien. Cependant, ce programme de ligne de commande échoue!Impossible de trouver ou charger la classe principale, mais .class existe

$ /opt/jdk1.8.0_131/bin/javac -classpath lib/*.jar *.java 
$ ls 
Module1.class Cross.class Ora.java Safe.class 
Module1.java Cross.java p1/  Safe.java 
lib/   Ora.class  
$ grep main Module1.java 
    public static void main(String[] args) { 
$ ls lib 
jsoup-1.10.3.jar 
$ /opt/jdk1.8.0_131/bin/java -classpath .:lib/* Module1 
Error: Could not find or load main class Module1 

Comment puis-je résoudre ce problème?

Répondre

1

Est-ce que Module1.java n'a aucune instruction de package? S'il y a une déclaration de paquet, alors il aurait besoin d'être déplacé dans le dossier du package et exécuter avec une commande comme

/opt/jdk1.8.0_131/bin/java -classpath .:lib/* package.Module1 

Je ne savais pas classpath soutiendrait jokers mais ressemble à celui ajouté que dans Java 6 qui montre depuis combien de temps java java depuis la ligne de commande. Ajoutez le corps de Module1.java à votre question si vous n'êtes pas sûr de ce que je demande.

+0

Le paquetage 'Moule1;' est ajouté en haut de tous les fichiers java. Comme vous pouvez le voir il n'y a aucun fichier de paquet ce que je dois déplacer au dossier de paquet. – mahmood

+0

Donc, j'ai supprimé la déclaration du paquet et c'est maintenant bien! Je ne pense pas avoir besoin d'un paquet maintenant – mahmood

+0

Si le paquet est Module1 alors le fichier de classe doit être dans le répertoire Module1 et la commande java serait \t '/opt/jdk1.8.0_131/bin/java -classpath. : lib/* Module1.Module1' La convention consiste à créer vos fichiers .java dans le répertoire du package. Ainsi, lorsque le compilateur crée le fichier de classe, la structure de répertoires des packages est déjà en place. Tout ira bien sans un paquet pour un programme de test simple mais il a des limites dans la façon dont il peut être utilisé. –