Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

197
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda