es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

No se puede resolver la ruta de archivo absoluta debido a que no reside en el sistema de archivos.

Mi código:

XWPFDocument doc = new XWPFDocument(OPCPackage.open(ResourceUtils.getFile("classpath:assets/OPTIONS_" + jubilar1.getJubiLanguage().toUpperCase() + ".docx")));

Ya he intentado en lugar de .getFile(), extractJarFileFromURL o resource.getInputStream() pero nada de esto funciona. Cuando empaqueto mi proyecto y lo ejecuto como un archivo jar e intenta abrir el siguiente archivo, siempre devuelve el siguiente mensaje.

Error:

java.io.FileNotFoundException: no se puede resolver la ruta de archivo absoluta de la clase de ruta de recursos [assets/OPTIONS<em>DE.docx] porque no reside en el sistema de archivos: jar:file:/home/tkf6y/IdeaProjects/hrapps/backend/target/backend-3.0.0.jar!/BOOT-INF/classes!/assets/OPTIONS</em>EN.docx
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    El problema con el código proporcionado es que está intentando acceder a un archivo dentro de un archivo jar al ejecutar el proyecto como un archivo jar. El método getFile() no funciona en este caso ya que espera una ruta de archivo en el sistema, no un recurso dentro de un jar.

    Para acceder al recurso dentro del jar, se puede utilizar ClassLoader para obtener el flujo de entrada del recurso de la siguiente manera:

    ClassLoader classLoader = getClass().getClassLoader();
    InputStream inputStream = classLoader.getResourceAsStream("assets/OPTIONS_" + jubilar1.getJubiLanguage().toUpperCase() + ".docx");
    XWPFDocument doc = new XWPFDocument(inputStream);
    

    Este código utiliza el método getResourceAsStream() de ClassLoader para obtener el flujo de entrada del recurso deseado. Luego pasa este flujo de entrada al constructor de XWPFDocument para inicializar el documento.

    Al utilizar este enfoque, el código debería poder acceder al recurso requerido incluso al ejecutarse como un archivo jar.

Comments are closed.