AVERTISSEMENT:ne peuvent pas utiliser JFace et SWT dans Eclipse sans créer de plug-in
c'est le cas classique de GUI .NET essayant de se frayer un chemin autour des choses JAVA.
PROBLÈME DESCRIPTION:
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 faire fonctionner JFace et SWT en dehors d'un projet de plugin.
Je m'attendrais à pouvoir utiliser JFace et SWT dans mon projet sans tracas, puisque j'ai mis "C:/eclipse 3.5/plugins" dans mon CLASSPATH (depuis mon ordinateur -> propriétés -> avancé - > variables d'environnement) et tout le swt - *. dll que je pourrais trouver dans mon PATH (à la fois l'utilisateur local et les chemins globaux, pour être sûr) comme this article indique dans le "Installation SWT et JFace" boîte. Le problème est que je ne peux pas importer quoi que ce soit d'eclipse.org à moins que je ne référence directement les jars de buildpath -> libraries -> ajouter des jars externes (pour pouvoir construire je dois ajouter les jars 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 fondamentalement, il est lancé dès qu'il essaie d'instancier la classe ApplicationWindow
(org.eclipse.jface.window.ApplicationWindow). Essayer de reproduire l'erreur, je commentais tout mon code et l'a remplacé par ce qui suit dans mon principal et il jette il 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 obtenir la foutue chose à exécuter?
Question 2: pourquoi les pots ne sont pas visibles à mon projet et comment les faire? Je manque probablement quelque chose de très trivial en raison de mon manque de familiarité avec Java et Eclipse. Toute aide hautement appréciée!
EDIT: semble être quelqu'un d'autre avait le même problème ->http://www.eclipsezone.com/eclipse/forums/t60528.html - pas trop clairement comment ils ont résolu cependant, l'aide appréciée
merci - J'ai réussi à comprendre cela, mais il a fallu un certain temps, comme dans cet article leur parler de fichier MANIFEST que je n'ai pas depuis que je suis sur java simple. J'ai donc ajouté une référence à org.eclipse.equinox.common et cela l'a corrigé (j'ai commencé à lancer une autre erreur sur EventManager, mais je l'ai corrigé en faisant référence à org.eclipse.core.commands). J'ai trouvé cela très confus ... Je devrais recevoir quelques avertissements si certaines des choses dont j'ai besoin pour exécuter l'application sont manquantes. – JohnIdol
Il est en effet déroutant. Si vous développiez le plugin eclipse, vous obtiendriez tous les avertissements, puisque les dépendances du plugin sont écrites dans le fichier MANIFEST.MF. Si vous avez directement référencé une classe/interface manquante, vous obtiendrez également un avertissement. Mais l'utilisation de fichiers jar dans une application autonome est difficile, et vous devez rechercher les dépendances vous-même (ou utiliser quelque chose comme Ivy ou Maven). –
Comment ajouter 'org.eclipse.equinox.common' à votre classpath? Pouvez-vous fournir des instructions? Où l'obtenez-vous et où l'installez-vous? – CodyBugstein