我有一个项目来解析一个大文件中的一些信息。
结构如下:
当我从 IDEA 运行应用程序时,我可以使用以下命令读取文件:
public void buffer() throws IOException {
try (InputStream inputStream = getClass().getResourceAsStream("/151279.txt");
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
String contents = reader.lines()
.collect(Collectors.joining(System.lineSeparator()));
}
}
Run Code Online (Sandbox Code Playgroud)
然后,如果我运行:
./mvnw package
java -jar target/file-parser-1.0-SNAPSHOT-runner.jar
Run Code Online (Sandbox Code Playgroud)
一切顺利。
即使我生成 GraalNative jar 并从本机生成 jar 运行应用程序:
./mvnw package -Pnative -Dquarkus.native.container-build=true
java -jar target/file-parser-1.0-SNAPSHOT-native-image-source-jar/file-parser-1.0-SNAPSHOT-runner.jar
Run Code Online (Sandbox Code Playgroud)
这一切都很好。
但是,当我运行命令以使用 docker 构建和运行时,我遇到了错误:
docker build -f src/main/docker/Dockerfile.native -t quarkus/file-parser
docker run -i --rm -p 8080:8080 quarkus/file-parser
2020-03-16 17:48:04,908 ERROR [io.qua.ver.htt.run.QuarkusErrorHandler] (executor-thread-1) HTTP Request to /init failed, error id: …Run Code Online (Sandbox Code Playgroud) 似乎默认情况下,由Quarkus生成的本机映像不包含任何对应于的内容的类路径资源src/main/resources/。
从GraalVM文档中,我有点理解为什么会发生这种情况,但是现在我陷入了困境。有没有一种方法可以配置quarkus-maven-plugin将资源包括在本机映像中?