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 :
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
 
			}
		});
	}
Merci d'avance !