Cómo obtener la ruta de recursos dentro de un jar

Sé que hay una serie de preguntas similares y las he respondido sin éxito. Probablemente me estoy perdiendo algo muy básico. Tengo archivos html en un paquete de recursos dentro del archivo jar de la aplicación y necesito recuperar sus rutas para leerlos y actualizarlos. Aquí está mi código:

URL url  = ClassLoader.class.getResource("/com/lamalva/ressources/test.html");
System.out.println(url);          
java.awt.Desktop.getDesktop().browse(java.net.URI.create(url.toString()));

Cuando ejecuto este código desde NetBeans IDE, el resultado es: archivo: /Users/Philippe/NetBeansProjects/Test/build/classes/com/lamalva/ressources/ SatelliteQuotaMonitor.html y el archivo html está abierto en el navegador como se esperaba, pero cuando Ejecuto el archivo jar desde el terminal OSX, el resultado es: jar: file: /Users/Philippe/.Trash/Test/Test.jar! /Com/lamalva/ressources/ SatelliteQuotaMonitor.html y el archivo html no se abre. Lo que sea que haga, no consigo el camino correcto. Siempre tengo el "Test.jar!" en el medio. Agradeceré enormemente la asistencia

Respuesta 1

La respuesta de una línea es:

Ruta de cadena = this.getClass (). GetClassLoader (). GetResource (). ToExternalForm ().

Básicamente, el método getResource proporciona la URL. Desde esta URL puede extraer la ruta llamando a ExternalForm ().

Referencias: https://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource(java.lang.String) https://docs.oracle.com/javase/7/ docs / api / java / net / URL.html # toExternalForm ()

Respuesta: 2

¿Necesita leer y actualizar recursos en el archivo jar?

Puede leer el contenido de una secuencia de entrada; use una ruta relativa si el recurso reside en el mismo paquete que el archivo de clase.

InputStream in = this.getClass().getResourceAsStream("/class/path/to/file");

Para escribir, probablemente necesitará leer el contenido del jar existente, modificar las partes que desea y luego escribir el contenido actualizado utilizando JarInputStream y JarOutputStream.

Respuesta: 3

Para abrir un recurso desde classpath en el navegador web de la plataforma predeterminada, tiene dos opciones. Extraiga y copie dicho recurso en una ubicación temporal en un sistema de archivos y pase el archivo: url. Otra y probablemente una mejor opción es ejecutar un servidor web incorporado (como Jetty) y servir recursos directamente desde su classpath.

Respuesta: 4

Una URL con el !sub protocolo de descompresión no se puede utilizar en un navegador normal. Al igual que ssh:(acceso a la terminal) o smtp:/ mailto:(correo electrónico). También "file: .... / my.jar! ..." es una extensión inutilizable de las URL normales.

Existe JTextPane / JEditorPane con soporte HTML limitado. Y algunos proyectos de navegador java.

Tal vez se pueda utilizar la incrustación del servidor web java Jetty.

Respuesta: 5

Estoy buscando instalar el complemento wro4j para eclipse. ¿Alguien puede mostrarme cómo instalar esto o señalarme una página que pueda mostrarme cómo instalarlo? La versión específica de eclipse es Eclipse ...

Estamos viendo aparecer este error muy genérico en algunas circunstancias, pero parece que no podemos rastrear lo que lo está generando y espero que alguien tenga alguna idea de por dónde empezar. Tenemos múltiples ...

Tengo un jsp. que llama a un servlet en jsp load y muestra los resultados en el mismo jsp que se muestra a continuación. Some.jsp <html> <jsp: include page = "/ HelloWorld" /> <% Iterator itr;%> <% ...

Quiero procesar páginas web (Google Adsense) o correos electrónicos, chats. Para eso necesito acceder a las páginas web (Google Adsense) o correos electrónicos, chats programáticamente. ¿Hay alguna API en Java o servicios web disponibles ...