2010-11-22 10 views
1

J'ai deux classes. J'ai créé un fichier JAR en utilisant:Quitte le JAR après la fin du premier cours

jar cvf practice.jar class1.class class2.class 

Je mis le point d'entrée de départ:

jar cfe practice.jar class1 class1.class 

Lorsque j'exécute le fichier JAR, il fonctionne très bien jusqu'au point où il y a une transition à l'autre class, ie class2 hey = new class2(); Ensuite, il sort. Mais je veux continuer à la classe suivante.

Il devrait aller à class2.class. Comme il est dit dans cet objet. Apparemment, ce n'est pas le cas.

public class class1 { 
    public static void main(String[] args){ 
     JOptionPane.showMessageDialog(null, "This is class 1", "Order",JOptionPane.PLAIN_MESSAGE); 
     class2 hey = new class2(); 
    } 
} 

public class class2 { 

    public class2() { 
     JOptionPane.showMessageDialog(null, "This is class 2", "Order",JOptionPane.PLAIN_MESSAGE); 
    } 
} 
+0

Pouvez-vous inclure une partie du code de Class1 et class2? – thattolleyguy

+0

S'il vous plaît montrer votre code source et tout message d'erreur que vous obtenez. –

+2

Pour le bien de la communauté, vous devriez nommer le titre quelque chose de significatif –

Répondre

0

J'ai essayé votre exemple et je reçois un noClassDefFound pour class2 après avoir appuyé sur « OK "dans la première fenêtre. C'est parce que le class2.class n'est pas présent dans le fichier practice.jar.

Effectuez les opérations suivantes au lieu des deux commandes: vos jar ...

jar cfe practice.jar class1 class1.class class2.class 
1

Vous faites une nouvelle instance de la classe 2 de l'objet, mais s'il n'y a rien dans le rien du constructeur qui va se passer, je suppose que vous avez du code dans une autre méthode class2 que vous devez appeler?

Je suppose qu'il serait également utile de savoir ce que vous entendez par "sortie".

+0

Je voulais dire que c'était comme si j'avais entrepris System.exit (0); automatiquement. – razshan

1

Le seul code écrit dans class2 est dans la méthode principale, cette méthode n'est pas exécutée lors de la création d'une instance de cette classe. Si vous soit déplacer le code au constructeur ou appelez la méthode principale:

public class Class1 { 

public Class1() { 
    JOptionPane.showMessageDialog(null, "This is class 1", "Order", 
      JOptionPane.PLAIN_MESSAGE); 
} 
public static void main(String[] args) { 
    Class1 c1 = new Class1(); 
    Class2 c2 = new Class2(); 
} 

}

public class Class2 { 
public Class2() { 
    JOptionPane.showMessageDialog(null, "This is class 2", "Order",JOptionPane.PLAIN_MESSAGE); 
} 

}

+0

'Le seul code écrit en classe2 est dans la méthode principale' - ce n'est pas ce que je vois dans la question originale. Il a un constructeur dans 'class2'. –