Ich habe ein Java-Projekt mit der Struktur, wie folgend:Wie kann ich die Ausgabeergebnisse im Ressourcenordner abrufen?
ich die hotels.csv
Datei mit dem Code lesen kann;
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("hotels.csv").getFile());
Ich habe results.xml
Ausgabedatei, die auch im gleichen Ordner sein muss wie in der Abbildung dargestellt. Derzeit ich, dass der Code,
StreamResult result = new StreamResult(new File("src/main/resources/result.xml"));
Wie kann ich das tut programmatisch nur die Dateinamen sagen, sagen sie, result.xml
und den Weg mit dem Programm?
Ich habe einen Beitrag im Forum für das gleiche Problem gesehen und bekam kein Ergebnis nach dem Folgen. Ich baut die pom.xml
Datei wie folgend,
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.test</groupId>
<artifactId>Trivago</artifactId>
<version>1.0-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>${RESOURCE_PATH}</directory>
<filtering>true</filtering>
</resource>
</resources>
</build>
<packaging>jar</packaging>
<name>Trivago</name>
<url>http://maven.apache.org</url>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<!-- Use the latest version whenever possible. -->
<jackson.version>2.4.4</jackson.version>
<RESOURCE_PATH>${project.basedir}/src/main/resources</RESOURCE_PATH>
</properties>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>commons-validator</groupId>
<artifactId>commons-validator</artifactId>
<version>1.4.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson.version}</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.apache.maven.plugins/maven-resources-plugin -->
<dependency>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
</project>
Eine später versuchen, die Methode zu verwenden, um den Pfad für die Ordner Ressourcen zu erhalten, wie vorgeschlagen,
private static String getResourcePath() {
try {
URI resourcePathFile = System.class.getResource("/RESOURCE_PATH").toURI();
String resourcePath = Files.readAllLines(Paths.get(resourcePathFile)).get(0);
// System.out.println("resourcePath = " + resourcePath);
URI rootURI = new File("").toURI();
URI resourceURI = new File(resourcePath).toURI();
URI relativeResourceURI = rootURI.relativize(resourceURI);
return relativeResourceURI.getPath();
} catch (Exception e) {
return null;
}
}
Leter, ich sollte StreamResult result = new StreamResult(new File(getResourcePath() +"/result.xml"));
Ich bekomme java.lang.NullPointerException
beim Ausführen dieser Befehlszeile URI resourcePathFile = System.class.getResource("/RESOURCE_PATH").toURI();
UPDATE: Ich betreibe auch den Befehl mvn generate-resources process-resources
vorgeschlagen in der post