tutorial que para descargar descarga java maven maven-2

java - que - maven tutorial



Recurso de src/main/resources no encontrado después de construir con maven (4)

Creo que el plugin de ensamblaje pone el archivo en la ruta de clase. La ubicación será diferente en el JAR que lo que ve en el disco. Desempaquete el archivo JAR resultante y observe dónde se encuentra el archivo allí.

Hola, estoy usando un archivo de configuración de src / main / resources en mi aplicación java. Lo estoy leyendo en mi clase de esta manera:

new BufferedReader(new FileReader(new File("src/main/resources/config.txt")));

Así que ahora estoy mvn assembly:assembly esto con maven usando mvn assembly:assembly . Aquí está el bit para eso en mi pom.xml:

<plugin> <artifactId>maven-assembly-plugin</artifactId> <version>2.3</version> <configuration> <finalName>TestSuite</finalName> <descriptorRefs> <descriptorRef>jar-with-dependencies</descriptorRef> </descriptorRefs> <archive> <manifest> <addClasspath>true</addClasspath> <mainClass>com.some.package.Test</mainClass> </manifest> </archive> </configuration> </plugin>

Entonces, cuando ejecuto mi aplicación, aparece este error:

src/main/resources/config.txt (The system cannot find the path specified)

Pero cuando hago clic derecho en mi jarra ensamblada, puedo verlo adentro, ¿alguien sabe lo que estoy haciendo mal?


FileReader lee desde archivos en el sistema de archivos.

Tal vez tu intención era usar algo como esto para cargar un archivo desde la ruta de la clase

// this will look in src/main/resources before building and myjar.jar! after building. InputStream is = MyClass.class.getClassloader() .getResourceAsStream("config.txt");

O puede extraer el archivo del contenedor antes de leerlo.


Los recursos de src/main/resources se colocarán en la raíz del classpath, por lo que deberá obtener el recurso como:

new BufferedReader(new InputStreamReader(getClass().getResourceAsStream("/config.txt")));

Puede verificarlo mirando el archivo JAR / WAR producido por maven, ya que encontrará config.txt en la raíz de su archivo.


Los recursos que pones en src / main / resources se copiarán durante el proceso de compilación para target / classes a los que se puede acceder utilizando:

...this.getClass().getResourceAsStream("/config.txt");