2010-03-24 2 views
5
package pack; 


public class sample{ 

public static void main(String input[]) 
    { 

     NumberFormat numberFormat = new DecimalFormat("#,##0.00##"); 
    System.out.println(numberFormat.format(44533125.00)); 

    } 
} 

Le code fonctionne correctement dans le répertoire actuel (c:/myprogram /). Ensuite, je copie le fichier sample.class et le colle dans un autre répertoire (d:/myprogram). j'ai eu erreur lors de l'exécution, commeException dans le thread "principal" java.lang.NoClassDefFoundError

 
Exception in thread "main" java.lang.NoClassDefFoundError: sample (wrong name: pack/sample) 

Dans le fichier java .class peut fonctionner partout non? mais pourquoi je ne suis pas capable de courir?

+4

Pourquoi est-ce un wiki communautaire? – medopal

Répondre

18

Vous devriez avoir le fichier de classe dans le paquet - il devrait donc être dans un répertoire appelé pack. Puis, avec le répertoire parent dans le classpath, vous lancerez la

java pack.sample 

(Vous devez également modifier le nom de la classe à l'échantillon à suivre les conventions, BTW - et exécuter pack.Sample.)

Si vous construisez avec javac, spécifiez l'option "-d" pour lui indiquer le répertoire de base, et il créera la structure de paquetage appropriée si nécessaire. Par exemple:

javac -d classes Sample.java 

ou

javac -d classes src/pack/Sample.java 

sera (dans les deux cas) créer

classes/pack/Sample.class 

Vous pouvez alors exécuter

java -cp classes pack.Sample 
+0

oui..son travail – Manu

-1

Si vous n'utilisez pas un seul fichier Java/classe, vous pouvez également supprimer le paquet statemen t.

0

IntelliJ et peut-être d'autres IDE ne remettent pas en état votre configuration Run/Debug. Vous devez changer manuellement le nom de votre paquet précédant le nom de votre classe principale. Par exemple, remplacez 'sample.Main' par 'com.company.package.ui.Main' afin qu'il se lance correctement la prochaine fois que vous essaierez de l'exécuter. L'EDI a peut-être déjà marqué le bouton Run/Debug avec une croix rouge car il n'a pas pu trouver la classe principale. Il donne également un avertissement lorsque vous ouvrez la configuration Run/Debug.

Questions connexes