Salut à tous,
je suis coincé sur un petit problème java qui m’avait l’air simple finalement me donne du fil à retordre.
Je m’explique rapidement. J’ai créé une application java pour embarquer et afficher un fichier pdf. J’ai utilisé la librairie ICEPDF pour le faire. Quand j’exécute le programme cela se fait sans problème. Il affiche le pdf sans faute. C’est lorsque je crée le jar et que je l’exécute, Il ne voit pas le fichier PDF.
Mon soucis est comment embarquer le PDF dans le jar ? en fait comment créer un chemin relatif de sorte à ce que le fichier soit embarqué dans le jar sans problème.
Voici mon code :Merci d'avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
74
75
76
77
78
79
80
81
82
83
84
85 public static void main(String[] args) { // TODO Auto-generated method stub File fdp1 = new File("pdf" + File.separator + "AWSAction.pdf"); fdp1.getAbsolutePath().toString(); System.out.println(fdp1.getAbsolutePath().toString()); String className=ViewCtrl.class.getName().replaceAll("\\.", "/" )+".class"; URL classPath=ViewCtrl.class.getClassLoader().getResource(className); File f =new File(classPath.getPath()); String currentFolder = System.getProperty("user.dir"); File fdp = new File(currentFolder + "//..//AWSAction.pdf"); SwingController controller = new SwingController(); controller.setIsEmbeddedComponent(true); Properties props=new Properties(); props.setProperty(PropertiesManager.PROPERTY_SHOW_UTILITY_SAVE,"false"); ResourceBundle.getBundle(PropertiesManager.DEFAULT_MESSAGE_BUNDLE)); org.main.common.SwingViewBuilder factory = new org.main.common.SwingViewBuilder(controller); JPanel viewerComponetPanel = factory.buildViewerPanel(); controller.getDocumentViewController().setAnnotationCallback(new org.icepdf.ri.common.MyAnnotationCallback(controller .getDocumentViewController())); JFrame applicationFrame = new JFrame(); applicationFrame.setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE); applicationFrame.setIconImage(new ImageIcon(Images.get("icepdf-app-icon-64x64.png")).getImage()); applicationFrame.setJMenuBar(getjMenuBar()); applicationFrame.add(viewerComponetPanel); // Ouverture du fichier ici controller.openDocument(fdp1.toString()); applicationFrame.pack(); applicationFrame.setVisible(true); applicationFrame.addWindowListener(new WindowListener() { @Override public void windowOpened(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowIconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeiconified(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowDeactivated(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowClosing(WindowEvent e) { // TODO Auto-generated method stub int reponse = JOptionPane.showConfirmDialog(null, "Voulez-vous vraiment quitter", "Confirmation", JOptionPane.YES_NO_OPTION); if (reponse == JOptionPane.YES_OPTION){ System.exit(0); }else if (reponse == JOptionPane.NO_OPTION){ return; } } @Override public void windowClosed(WindowEvent e) { // TODO Auto-generated method stub } @Override public void windowActivated(WindowEvent e) { // TODO Auto-generated method stub } }); }
Partager