Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

194
Vistas
Cargando recurso con Java tanto en IDE como desde JAR (desde contexto estático)

Mi estructura de carpetas dentro de src es así:

 src ├── main │  ├── java │  │  └── com │  │  └── organization │  │  └── projectname │  │  ├── Transformer.java │  │  └── Utils.java │  └── resources │  └── config └── test ├── java │  └── com │  └── organization │  └── projectname │  └── AppTest.java └── resources └── file └── test.txt

y quiero leer el archivo test.txt .

Uso Maven y Eclipse, pero me gustaría que se ejecute el mismo código cuando empaqueto en JAR (con mvn package ) y cuando alguien se ejecuta dentro de IDE o por línea de comandos.

Mi intento aquí falla (se vuelve nulo):

 InputStream input = Scorer.class.getResourceAsStream("file/test.txt"); System.out.println(input); // prints null

al igual que este intento (se vuelve nulo):

 ClassLoader classLoader = Thread.currentThread().getContextClassLoader(); URL url = classLoader.getResource("file/test.txt"); System.out.println(url.getFile()); // prints null

Estoy bastante seguro de que el archivo existe en esa ubicación dentro de src/test/resources/file/ , así que me pregunto qué más estoy haciendo mal.

¡Gracias!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Dado que test.txt está en src/test/resource , no estará disponible en el archivo jar ni cuando ejecute la aplicación en su IDE, a menos que esté ejecutando unidades de prueba. Aquí hay una introducción al diseño de directorio estándar

Sugiero moverlo en src/main/resource .

Pasar a src/main/resource permitirá que su IDE tenga el recurso disponible cuando ejecute o depure su proyecto.

Por otro lado, Maven podrá copiar los recursos en el contenedor cuando ejecute el objetivo del mvn package .

Para asegurarse de que el objetivo del mvn package copie los archivos en el Jar, simplemente agregue estas líneas en su proyecto pom:

 <build> <resources> <resource> <directory>src/main/resources</directory> <includes> <include>**.txt</include> </includes> </resource> </resources> </build>

Eche un vistazo al Complemento de recursos de Maven para comprender cómo escribir la configuración de <resource> .

Y preste atención a esto: si actualiza su archivo maven pom.xml, agregando una o más partes <resource> , esto no significa que, por el contrario, su IDE actualice el proyecto con este comportamiento/configuración (es decir, copie los recursos).

Entonces, cada vez que tenga que verificar tanto Maven pom.xml como la configuración del proyecto IDE.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda