2013-03-14 2 views
1

J'ai une classe qui utilise Java3D qui compile avec succès, bien que lorsque je tente de l'exécuter, il dit: Exception dans le thread « principal » java.lang.NoClassDefFoundError: javax/media/J3D/Canvas3D,Java3D - Certaines classes ne se trouve pas, mais classpath est correctement réglé

Avec la trace de la pile suivante:

 at java.lang.Class.getDeclaredMethods0(Native Method) 
     at java.lang.Class.privateGetDeclaredMethods(Unknown Source) 
     at java.lang.Class.getMethod0(Unknown Source) 
     at java.lang.Class.getMethod(Unknown Source) 
     at sun.launcher.LauncherHelper.getMainMethod(Unknown Source) 
     at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source) 
Caused by: java.lang.ClassNotFoundException: javax.media.j3d.Canvas3D 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.net.URLClassLoader$1.run(Unknown Source) 
     at java.security.AccessController.doPrivileged(Native Method) 
     at java.net.URLClassLoader.findClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 
     at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
     at java.lang.ClassLoader.loadClass(Unknown Source) 

Stuff J'ai déjà essayé:

  1. Je ne pouvais même pas le compiler jusqu'à ce que je copie les jars Java3D dans/jre/lib/ext /. J'ai les derniers Java, Java3D et j'utilise Notepad ++ et j'ai essayé de réinstaller Java3D.

  2. J'ai défini correctement le chemin de classe/le chemin.

  3. Il n'y a pas d'erreur dans le code.

  4. Je peux exécuter les applications Java normales que j'ai créées.

  5. J'ai essayé d'utiliser la classe classpath lors de l'exécution de l'application (java -classpath blahblah ApplicationName).

  6. J'ai vérifié à l'intérieur des pots et les classes (y compris Canvas3D) sont définitivement là.

+0

que vous utilisez? Eclipse ?? – Biswajit

Répondre

0

Tout ce que vous dites n'est pas vrai. Si les classes sont dans les jarres, et SI vous avez défini le chemin de classe correctement, alors vous n'obtiendrez pas ce message. Je suppose que vous avez un chemin de construction confondu avec un chemin de classe (qui est principalement associé à l'exécution, où le chemin de génération est associé à la compilation). Sans connaître plus de détails sur votre environnement d'exécution, il est difficile d'être plus précis. Cela me laisse toujours perplexe de voir comment une personne avec un problème qu'elle ne peut pas résoudre affirme si clairement que toutes ces choses sont configurées "correctement": comment le savez-vous? Le problème n'est-il pas une preuve du contraire, au moins assez pour un petit doute?

+0

J'ai placé l'emplacement des fichiers jar Java3D (plusieurs emplacements) dans les variables d'environnement classpath et path, et je suis assez sûr qu'ils sont corrects. Qu'est-ce que vous avez spécifiquement besoin de savoir sur mon environnement d'exécution? Je vous donnerais tous les détails que j'ai, mais je ne suis pas sûr de ce dont vous auriez besoin. Biswajit, j'ai utilisé Eclipse, même si j'ai maintenant arrêté de l'utiliser. J'utilise Notepad ++ à la place parce qu'il ne fait pas cette chose d'auto-complication ennuyante. Merci également à Benjamin Gruenbaum pour avoir rendu mon message plus beau. – Hsenfow

+0

(soupir) Nous avons à peine assez d'informations pour savoir quoi demander. Vous parlez de bloc-notes, vous êtes donc sur une interface de ligne de commande? Dans ce cas, nous avons besoin du système d'exploitation, du répertoire par défaut, des emplacements des fichiers sources et des classes, de la valeur du classpath et des lignes qui débordent avec NoClassDefError en haut. En bref, nous avons besoin de connaître l'environnement que vous utilisez et ce qui se passe, en détail, en l'occurrence, et non votre interprétation de celui-ci avec des assertions que tout cela est correct. – arcy

+0

Désolé si j'étais apparu arrogant, je croyais juste que j'avais fait tout ce qui était requis. Oui, j'utilise l'invite de commande sous Windows 7 64Bit Home Premium.Je ne suis pas sûr de ce que vous entendez par "répertoire par défaut", bien que je vais supposer que vous voulez dire l'endroit où Java est installé, qui est "C: \ fichiers de programme (x86) \ java \", Java 7, Java3D et JRE sont installés là. J'ai le fichier de classe et le fichier Java dans un dossier sur mon bureau avec une copie du CMD que j'utilise parce que c'est plus facile. Les "lignes qui débordent" se trouvent au-dessus dans ma question. Je vais commenter à nouveau car je n'ai plus de caractères. – Hsenfow

Questions connexes