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.

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.

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.

Imagen de ezamudio

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).