java - 未找到 Maven 资源
问题描述
我想在 Maven 项目中包含一个文本文件。代码本身可以编译,但每次我尝试运行它时,无论是在 VS Code 中还是在命令行中,我都会得到:java.io.FileNotFoundException: The provided file path /lightdm-forum.txt does not exist.
该文件位于 src/main/resources/,这是默认值。
代码片段:
public static void main(String[] args) throws Exception {
StreamExecutionEnvironment env = StreamExecutionEnvironment.createLocalEnvironment();
DataStream<Tuple2<String, Integer>> dataStream = env
.readTextFile("/lightdm-forum.txt")
.flatMap(new Splitter())
.keyBy(0)
.sum(1);
dataStream.print();
env.execute("Socket Stream WordCount");
}
Maven 似乎可以识别该文件并将其复制到类路径根目录:
[INFO] --- maven-resources-plugin:3.0.2:resources (default-resources) @ WordCount_Stream ---
[INFO] Using 'UTF-8' encoding to copy filtered resources.
[INFO] Copying 1 resource
编译后,目标文件夹中的结构如下所示:
.
├── classes
│ ├── com
│ │ └── lmu
│ │ └── WordCount_Stream
│ │ ├── WordCounter$Splitter.class
│ │ └── WordCounter.class
│ └── lightdm-forum.txt
所以文件已经被复制了,但是我尝试运行项目时却找不到。有任何想法吗?
解决方案
您使用/lightdm-forum.txt
which is a path 作为全局路径。您可以尝试使用相对路径,如path/to/your/subfolder/or/file
or ../path/to/upper/folder/and/other/folders
。
也许更好的解决方案可能是使用类加载器,例如Thread.currentThread().getContextClassLoader().getResource(resourceName)
. 这样您就可以从 maven 资源包中加载文件(默认为 src/Main/resources,Van 也可以在 pom.xml 中自定义)
希望能帮助到你!
推荐阅读
- java - android中所有应用程序的共享链接按钮
- excel - Excel 枢轴计算字段
- android - listView 上的复选框可防止事件单击,kotlin
- python - 如何从 Azure IoT Edge 模块 Python 发送新消息
- react-native - React-Native Android 构建失败:任务“:app:processDebugResources”执行失败。处理资源失败
- wordpress - 使用 WP JWT Auth 登录 Facebook
- python - Python:从数据库中的 JSON 化字符串创建 JSON obj
- react-native - 是否可以从 React Native WebView 中的响应中获取状态代码?
- css - 垂直调整窗口大小时,为什么底部 div 与顶部 div 重叠?
- arrays - 为什么我的对象数组结果加倍?