¿Hay algún método integrado que pueda usar para permitir a los usuarios extraer un archivo del JAR actualmente en ejecución y guardarlo en su disco?Extraer un archivo del JAR actualmente en ejecución a través del código
Gracias de antemano.
¿Hay algún método integrado que pueda usar para permitir a los usuarios extraer un archivo del JAR actualmente en ejecución y guardarlo en su disco?Extraer un archivo del JAR actualmente en ejecución a través del código
Gracias de antemano.
Use getResourceAsStream
(docs), puede hacer lo que quiera con eso después de eso.
Para un dos líneas, puede usar one of the Commons IO copy methods.
No estoy seguro de si usted conseguirá saber de qué frasco se está ejecutado su clase, pero se puede intentar esto a extraer recursos del frasco: How to write a Java program which can extract a JAR file and store its data in specified directory (location)?
File file = new File("newname.ext");
if (!file.exists()) {
InputStream link = (getClass().getResourceAsStream("/path/resources/filename.ext"));
Files.copy(link, file.getAbsoluteFile().toPath());
}
Tenga en cuenta que parte de la implementación de Files.copy (java.nio.file.Files) no cierra la secuencia de entrada -> posible pérdida de memoria. – Vity
getResourceAsStream le dará acceso a cualquier recurso correspondiente en la ruta de clase y no solo un archivo que contiene el "JAR actualmente en ejecución", suponiendo que se trata de un archivo JAR ejecutado con "java -jar". –
jarnbjo
@jarnbjo Sí. Y si el recurso no está debidamente empaquetado, es * posiblemente * un problema, pero dada la pregunta, creo que el problema es mucho más amplio que necesitarlo * específicamente * del "contenedor en ejecución", con exclusión de todos los demás recursos empaquetados exactamente igual. –
Eso hizo el truco. ¡Gracias! – Konstantin