J'ai un projet java dans lequel un bouton ouvre un fichier pdf lorsque le projet a été exporté dans un fichier exécutable, le fichier ne s'ouvre pas !!
c'est mon écouteur de bouton
public void about (Event event){
if (Desktop.isDesktopSupported()) {
try {
File myFile = new File("src/application/Documenation.pdf");
Desktop.getDesktop().open(myFile);
} catch (IOException ex) {
// no application registered for PDFs
}
}
}
Réponses:
0 pour la réponse № 1Ne référencez jamais de contenu dans le src
répertoire, lorsque votre projet est construit, le src
répertoire n'existera pas.
Le contenu contenu dans le contexte de votre application (en particulier ceux qui sont inclus dans un fichier Jar) n'est normalement pas accessible en tant que File
(comme vous le faites à partir du système de fichiers), ils deviennent une entrée dans votre fichier Jar d'applications.
Dans ce cas, vous devrez extraire le fichier avant de pouvoir l'ouvrir.
Ce que vous pouvez faire, c'est utiliser Class#getResourceAsStream
et copiez le résultat InputStream
sur le disque
Par exemple...
try (InputStream is = getClass().getResourceAsStream("/application/Documenation.pdf")) {
File file = File.createTempFile("Documentation", ".pdf");
file.deleteOnExit();
try (OutputStream os = new FileOutputStream(file)) {
byte[] buffer = new byte[1024];
int bytesRead = -1;
while ((bytesRead = is.read(buffer)) != -1) {
os.write(buffer, 0, bytesRead);
}
}
Desktop.getDesktop().open(file);
} catch (IOException exp) {
exp.printStackTrace();
}