Duda con URI al tratar de abrir un archivo pdf
Estoy tratando de leer un archivo pdf de la siguiente forma:
try {
File path = new File(getClass().getResource("rep/Contrato.pdf").toURI());
Desktop.getDesktop().open(path);
} catch (URISyntaxException ex) {
Logger.getLogger(DComprar.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(DComprar.class.getName()).log(Level.SEVERE, null, ex);
}
cuando lo ejecuto desde netbeans todo esta bien, el problema es despues de haber construido el proyecto cuando intento ejecutarlo desde el jar, me muestra el siguiente error:
Exception occurred during event dispatching:
java.lang.IllegalArgumentException: URI is not hierarchical
at java.io.File.(File.java:380)
at gui.DComprar.verContrato(DComprar.java:126)
at gui.DComprar.bContratoActionPerformed(DComprar.java:280)
at gui.DComprar.access$300(DComprar.java:32)
at gui.DComprar$5.actionPerformed(DComprar.java:220)
at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2012)
Agradezco su ayuda.
- Inicie sesión o regístrese para enviar comentarios
De casualidad estas queriendo
De casualidad estas queriendo abrir el PDF desde un Jar cuando el proyecto está construido?
El Desktop.getDesktop.open es similar a darle dobleclick al archivo PDF, dispara la aplicación asociada.
Cuando lo haces desde denro de un jar es como si quisieras abrir "C:\mi.zip\!un.pdf" y el archivo por estar dentro del jar no puede ser leído.
Esto es una mera suposición porque no sé si cuando construyes la aplicación se genera un Jar o no, pero a juzgar por el mensaje parece esto.
URI debe ser file:
La clase File solamente acepta URIs de protocolo file:. Si tu PDF está dentro de un JAR, te va a dar un protocolo distinto (imprime el URI para que veas qué protocolo trae al principio).