Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > Eclipse > Eclipse Platform
Eclipse Platform Développement de plugins Eclipse et d'applications Eclipse RCP (Rich Client Platform). Avant de poster -> Tutoriels sur le développement de plugins Eclipse
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 06/09/2012, 09h09   #1
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 180
Points : 27
Points : 27
Par défaut [iText] Intégration d'iText

Salut à tous,

J'essaye actuellement d'importer des librairies dans mon projet sous Eclipse Helios. En l’occurrence, il s'agit des librairies iText (http://sourceforge.net/projects/itex...xt/iText5.3.2/)
Donc je les ai copié dans mon répertoire (Lib) puis j'ai ajouter les Jars avec le Java Build path.

J'ai l'erreur suivante:

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
java.lang.NoClassDefFoundError: com/itextpdf/text/DocumentException
    at fr.eldoon.gui.editors.eldoonEditor.createPartControl(eldoonEditor.java:357)
    at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670)
    at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
    at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
    at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313)
    at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
    at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
    at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
    at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
    at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1254)
    at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1207)
    at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1606)
    at org.eclipse.ui.internal.PartStack.add(PartStack.java:497)
    at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:103)
    at org.eclipse.ui.internal.PartStack.add(PartStack.java:483)
    at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:112)
    at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:63)
    at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:225)
    at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:213)
    at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:778)
    at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:677)
    at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:638)
    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2860)
    at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2768)
    at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2760)
    at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2711)
    at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2707)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2691)
    at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2674)
    at fr.eldoon.gui.commands.CmdHdlOpen.execute(CmdHdlOpen.java:61)
    at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:293)
    at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
    at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
    at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
    at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
    at org.eclipse.ui.menus.CommandContributionItem.handleWidgetSelection(CommandContributionItem.java:820)
    at org.eclipse.ui.menus.CommandContributionItem.access$19(CommandContributionItem.java:806)
    at org.eclipse.ui.menus.CommandContributionItem$5.handleEvent(CommandContributionItem.java:796)
    at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
    at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
    at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2640)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
    at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
    at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
    at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
    at fr.eldoon.gui.Application.start(Application.java:20)
    at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
    at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:620)
    at org.eclipse.equinox.launcher.Main.basicRun(Main.java:575)
    at org.eclipse.equinox.launcher.Main.run(Main.java:1408)
    at org.eclipse.equinox.launcher.Main.main(Main.java:1384)
Caused by: java.lang.ClassNotFoundException: com.itextpdf.text.DocumentException
    at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:506)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
    at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClassInternal(Unknown Source)
    ... 64 more
Aprés recherche, il semblerait que l'erreur vienne du fait que la librairie ne soit pas implémentée au projet. Sur internet, ils disent, qu'en plus de ce que j'ai fait, il faut cocher les librairies dans "Java EE Modules dependencies" mais il n'y en a pas sous Helios.

J'ai mis en fichier attaché une vue de mon Eclipse, avec le Java Build Path, les librairies qui apparaissent dans le projet à gauche, et le bout de code qui faire une erreur.

Quelqu'un saurait-il m'indiquer quoi faire ?

Merci d'avance.
Images attachées
Type de fichier : jpg Sans titre1.JPG (275,9 Ko, 17 affichages)
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2012, 11h32   #2
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 180
Points : 27
Points : 27
En fait, il ne faut rien faire de plus, à ce que j'ai compris, pour ajouter une librairie.

En fait, il trouve toutes les classes de la librairie dont j'ai besoin, sauf celle-ci; "com/itextpdf/text/DocumentException". Quand je vais voir le JAR correspondant, il y a pourtant la classe DocumentException à l'intérieur, en l'ouvrant avec Winrar.

Je ne comprends vraiment pas d’où vient le problème.

J'ai essayé plusieurs versions d'iText et la même erreur revient toujours... J'ai aussi essayé sur plusieurs de mes fichiers. Donc le problème doit bien venir de mon projet en lui-même...
Une idée de ce que ça pourrait être ?
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/09/2012, 15h52   #3
Laurent.B
Rédacteur/Modérateur
 
Avatar de Laurent.B
 
Homme Laurent Barbareau
Ingénieur développement logiciels
Inscription : novembre 2004
Messages : 2 985
Détails du profil
Informations personnelles :
Nom : Homme Laurent Barbareau
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 2 985
Points : 14 725
Points : 14 725
Envoyer un message via Skype™ à Laurent.B
Bonjour,

Le message dit effectivement que la lib est absente du ClassPath, donc à l'exécution.

Normalement, quand on référence les libs dans le BuildPath, celles-ci sont ensuite répercutées automatiquement dans le ClassPath, donc dans ton cas, ça devrait fonctionner puisque le fichier itextpdf-5.3.2.jar y est bien présent.

Je pense qu'il y a peut-être un conflit dans ton BuildPath, ce ne serait peut-être pas le bon JAR qui est chargé en premier... Je vois qu'il y a plusieurs JAR qui n'ont rien à faire dans le BuildPath. Tout ce qui est javadoc et sources peut être supprimé de celui-ci car ça n'est utile que pour le développement et nul besoin de les référencer à cet endroit.

Supprime également le itext-pdfa-5.3.2.jar qui à mon avis est une tentative de ta part.

Une fois que c'est nettoyé, vérifie si c'est en ordre au niveau de la configuration d'exécution, dans l'onglet Classpath, puisque c'est lui qui fait foi pour l'exécution.
__________________
Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
Pensez à cliquer sur le bouton une fois votre problème solutionné, merci.
Laurent.B est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 08h32   #4
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 180
Points : 27
Points : 27
Merci pour ta réponse.

J'ai pris une autre version du iText, ou il n'y avait qu'un seul fichier, pour éviter les conflits. (http://sourceforge.net/projects/itex...xt/iText5.0.0/)

J'ai supprimé tout ce que j'avais fait sur les anciens, et j'ai rajouté le nouveau dans le Build Pass.

Cela fait la meme erreur.

Je ne trouve pas l'onglet Classpath, ou est-il?
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 09h16   #5
Laurent.B
Rédacteur/Modérateur
 
Avatar de Laurent.B
 
Homme Laurent Barbareau
Ingénieur développement logiciels
Inscription : novembre 2004
Messages : 2 985
Détails du profil
Informations personnelles :
Nom : Homme Laurent Barbareau
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 2 985
Points : 14 725
Points : 14 725
Envoyer un message via Skype™ à Laurent.B
Cf. http://eclipse.developpez.com/faq/in...PathProjetJava
__________________
Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
Pensez à cliquer sur le bouton une fois votre problème solutionné, merci.
Laurent.B est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 10h07   #6
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 180
Points : 27
Points : 27
Je pense qu'on s'en rapproche mais en fait le problème est un peu différent, puisqu'en fait je travaille sur un exécutable de type "product", et il n'y a pas de classpath dans cette catégorie.

D'autre part, j'ai essayé de créer un stand alone avec le iText et bonne chose, j'ai des erreurs sur tous les imports de iText. C'est donc bien un problème global d'importation du iText et non un problème avec la classe DocumentException.
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
----------
65. ERROR in D:\Workspace\eldoonProject\java_svn\eldoonEclipseProject\src\fr\eldoon\gui\jung\JungEdPanel.java (at line 28)
    import com.itextpdf.text.Document;
           ^^^^^^^^^^^^
The import com.itextpdf cannot be resolved
----------
66. ERROR in D:\Workspace\eldoonProject\java_svn\eldoonEclipseProject\src\fr\eldoon\gui\jung\JungEdPanel.java (at line 29)
    import com.itextpdf.text.DocumentException;
           ^^^^^^^^^^^^
The import com.itextpdf cannot be resolved
----------
67. ERROR in D:\Workspace\eldoonProject\java_svn\eldoonEclipseProject\src\fr\eldoon\gui\jung\JungEdPanel.java (at line 30)
    import com.itextpdf.text.PageSize;
           ^^^^^^^^^^^^
The import com.itextpdf cannot be resolved
----------
68. ERROR in D:\Workspace\eldoonProject\java_svn\eldoonEclipseProject\src\fr\eldoon\gui\jung\JungEdPanel.java (at line 31)
    import com.itextpdf.text.pdf.PdfWriter;
           ^^^^^^^^^^^^
The import com.itextpdf cannot be resolved
----------
En fait, faut-il faire quelque chose en plus du Build Path lorsqu'on veut importer une librairie sur un projet de type "product"?
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 10h37   #7
Laurent.B
Rédacteur/Modérateur
 
Avatar de Laurent.B
 
Homme Laurent Barbareau
Ingénieur développement logiciels
Inscription : novembre 2004
Messages : 2 985
Détails du profil
Informations personnelles :
Nom : Homme Laurent Barbareau
Âge : 40
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Ingénieur développement logiciels
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : novembre 2004
Messages : 2 985
Points : 14 725
Points : 14 725
Envoyer un message via Skype™ à Laurent.B
Citation:
Envoyé par Ma29200 Voir le message
je travaille sur un exécutable de type "product"
Ceci est tout de même une information capitale qui l'aurait fallu indiquer dès le départ...
Effectivement, quand on regarde plus attentivement ton screenshot, il y a de quoi avoir la puce à l'oreille mais il faut avoir l’œil quand même...

Quoi qu'il en soit, le problème ne se traite pas de la même manière. Le mieux est de "bundleliser" ton jar. Pas le temps de t'expliquer dans l'immédiat, je te laisse chercher ou sinon, quelqu'un d'autre pourra peut-être te répondre.
__________________
Responsable FAQ Eclipse | Maintiens et développe un des logiciels destinés aux rédacteurs sur developpez.com
Pensez à cliquer sur le bouton une fois votre problème solutionné, merci.
Laurent.B est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/09/2012, 11h06   #8
Gueritarish
Modérateur
 
Avatar de Gueritarish
 
Homme Marc
Développeur Java
Inscription : mai 2007
Messages : 1 564
Détails du profil
Informations personnelles :
Nom : Homme Marc
Âge : 28
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Développeur Java
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2007
Messages : 1 564
Points : 3 574
Points : 3 574
Salut,

Effectivement, tu travailles sur un Eclipse RCP (ou des plug-ins Eclipse au moins).
Il s'agit juste du coup, soit d'utiliser un bundle itext (ce dont parle Laurent), soit d'inclure correctement ton JAR dans ton plug-in.
Pour la première solution, tu as 3 solutions:
  • passer par un projet qui s'appelle Orbit (il faut rechercher com.lowagie.text dans le repository) et qui fournit des JARs déjà bundlelisé
  • passer par le repository spring source qui contient la même chose
  • soit bundleliser ton JAR toi même.
Cette solution, mis à part le dernier cas, a la fâcheuse tendance à t'imposer des versions qui ne correspondent pas forcément à la version que tu souhaites utiliser...
Mais du coup, pour l'utiliser, il te suffit de mettre ton JAR bundlelisé dans ton installation d'Eclipse puis de le relancer avec un -clean et tu ajoutes ton JAR bundlelisé comme n'importe quel plug-in.

Pour la seconde, il te suffit d'aller sur ton MANIFEST.MF, dans l'onglet Runtime, tu as une partie Classpath dans laquelle il te faut ajouter ton JAR (en cliquant sur "Add..."). Il te faut ensuite t'assurer que ton JAR sera packagé dans ton bundle en allant dans l'onglet Build et en sélectionnant ton JAR.

Voilà, à+
Gueritarish
__________________
Pas de questions technique par MP, les forums sont là pour ça.

Le 5 et 6 juin à Toulouse, la première EclipseCon France !
Gueritarish est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/09/2012, 15h25   #9
Ma29200
Nouveau Membre du Club
 
Femme
Inscription : janvier 2012
Messages : 180
Détails du profil
Informations personnelles :
Sexe : Femme

Informations forums :
Inscription : janvier 2012
Messages : 180
Points : 27
Points : 27
Tout d'abord, je ne savais pas que le fait que ca soit un "product" changerait quelque chose.

J'ai choisi la deuxième solution, et ca marche!

Merci à vous deux!
Ma29200 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h59.


 
 
 
 
Partenaires

Hébergement Web