Question

AVERTISSEMENT :

c'est le cas classique de GUI .NET essayant de se frayer un chemin autour des choses JAVA.

DESCRIPTION DU PROBLEME:

Je suis en train de construire une interface graphique très simple avec JFace et SWT - le code est simple (il y a des tutoriels abondance), ce qu'il est pas si simple est que je ne peux pas sembler obtenir JFace et SWT à travailler en dehors d'un projet de plugin .

Je pense pouvoir utiliser JFace et SWT dans mon projet sans tracas, puisque je mets « C: / Eclipse 3.5 / plugins » dans mon CLASSPATH (de mon ordinateur -> propriétés -> Avancé -> variables d'environnement) et toutes les swt -. * dll je pouvais trouver dans mon chemin (à la fois utilisateur local et CHEMINs mondial, pour être sûr) comme cet article indique dans la "boîte Installation SWT et JFace".

Le problème est que je ne peux pas importer quoi que ce soit à partir eclipse.org à moins que je renvoie directement les pots de Buildpath -> Bibliothèques -> ajouter des pots externes (pour que pour construire, je dois ajouter les bocaux suivants: org.eclipse.swt.win32.win32.x86_3.5.1.v3555a.jar , org.eclipse.jface_3.5.1.M20090826-0800.jar ). Une fois que je le fais, il se construit bien mais quand je le lance comme « Java Application » Je reçois l'erreur suivante (dois-je RUN AS quelque chose d'autre?):

Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
    at demo.ui.test.EntryPoint.main(EntryPoint.java:18)
Caused by: java.lang.ClassNotFoundException: org.eclipse.core.runtime.IProgressMonitor
    at java.net.URLClassLoader$1.run(URLClassLoader.java:200)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
    at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)
    ... 1 more

J'ai essayé de déboguer cela et il est essentiellement jeté dès qu'il essaie d'instancier la classe ApplicationWindow (org.eclipse.jface.window.ApplicationWindow). Essayer de reproduire l'erreur, je commentais sur tout mon code et remplacé par ce qui suit dans mon principal et il jette même erreur que ci-dessus sur la première ligne:

ApplicationWindow w = new ApplicationWindow(null); //<-- error on this line
w.setBlockOnOpen(true);
w.open();
Display.getCurrent().dispose();

QUESTIONS:

Question 1 : comment puis-je corriger l'erreur ci-dessus (je voudrais comprendre ce qui se passe) et d'obtenir la fichue chose à courir

Question 2 : pourquoi les pots ne sont pas visibles à mon projet et comment les faire

Je suis probablement manque quelque chose de très banal en raison de mon manque de familiarité avec Java et Eclipse. Toute aide très appréciée!

EDIT : semble que quelqu'un d'autre avait le même problème -> http://www.eclipsezone.com/eclipse/forums/t60528.html - pas trop clair comment ils ont résolu cependant, l'aide appréciée

Était-ce utile?

La solution

Interface IProgressMonitor n'est pas disponible dans ces deux pots que vous utilisez. Vous devez également mettre le plugin org.eclipse.equinox.common sur votre chemin de classe. IProgressMonitor peut être utilisé sans courir tout environnement d'éclipse.

(Ceci est la solution de l'article que vous faites référence à. Je pensais au départ que IProgressMonitor est en plugin org.eclipse.core.runtime, mais il a été déplacé à org.eclipse.equinox.common comme décrit dans bug # 122935 )

Autres conseils

Faisant écho du point de Pierre ci-dessus, je dois toujours ajouter un tas de fichiers JAR pour faire avancer les choses en cours d'exécution (en particulier pour JFace). En règle générale, je vais avoir besoin

./org.eclipse.core.commands_3.3.0.I20070605-0010.jar
./org.eclipse.core.runtime_3.3.100.v20070530.jar
./org.eclipse.equinox.common_3.3.0.v20070426.jar
./org.eclipse.jface_3.3.1.M20070910-0800b.jar
./org.eclipse.osgi_3.3.2.R33x_v20080105.jar
./org.eclipse.ui.forms_3.3.0.v20070511.jar

Vous pouvez utiliser quelque chose comme jarfinder pour aider à localiser les fichiers qui vivent dans ce Jarres. Dans les fenêtres, je me souviens en utilisant la fonction de recherche pour rechercher, par exemple, IProgressMonitor.class dans les fichiers zip / jar dans le dossier Eclipse sur le système de fichiers -. Comme parfois les JARs réels peuvent être difficiles à traquer

Je travaille habituellement en voyant ce qui échoue, traquer / ajouter le JAR, rincer et répéter.

Faire RCP / plugins semble comme Eclipse prend en charge un grand nombre de questions pour vous, faire votre propre application autonome est livré avec ce bagage supplémentaire, mais il est vraiment agréable d'avoir une interface graphique appropriée autonome natif regarder si vous restez avec il. Donc, je typiquement vanille configuration (non-plugin) projets Eclipse et il vous oblige à faire face à ces problèmes (ajouter JARs au classpath manuellement). Il est également très pratique comme et quand vous voulez distribuer votre projet.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top