我的java应用程序没有读取我的文件(maven项目)

Tup*_*pac 5 java eclipse file maven

我在Java简单项目中有一个应用程序.但是,我需要将此项目粘贴到Maven项目中.所以,我基本上制作了一个简单的Maven项目,并将所有类复制并粘贴到其中.我需要在服务器中运行一个war,我需要像Java应用程序一样运行Main,因为这个应用程序配置了war应用程序.但是,当我运行Main时,我会收到一些我之前没有的错误:

java.io.FileNotFoundException:resources\config.properties(系统找不到指定的路径)

在代码中是:

input = new FileInputStream("resources/config.properties");
Run Code Online (Sandbox Code Playgroud)

这也不起作用:

faceDetector = new CascadeClassifierDetector("D:/retinoblastoma/workspace/Resources/CascadeClassifiers/FaceDetection/haarcascade_frontalface_alt.xml");
Run Code Online (Sandbox Code Playgroud)

我怎样才能解决这个问题?

Mit*_*ain 5

在一个简单的Mavne项目中,所有资源都应该位于src/main/resources中.您可以通过(对于非静态方法)获取属性文件:

Properties prop = new Properties(); prop.load(getClass().getClassLoader().getResourceAsStream("config.properties"));

对于静态方法,请使用: <Class name>.class.getClassLoader().getResourceAsStream("config.properties");

有关更多信息,请参阅此链接: 读取属性文件


dur*_*597 3

如果您使用的是“简单的 Maven 项目”,则 Maven 的方式是有一个src/main/resources文件夹。您是否将 pom.xml 配置为执行与此不同的操作?

如果您正确完成了 jar 创建部分,则获取类路径上的文件的正确方法是:

getClass().getResourceAsStream("/path/to/resource.ext");
Run Code Online (Sandbox Code Playgroud)

前导的正斜杠很重要!

如果该文件不在您的类路径上(换句话说,如果上述方法不起作用,就会出现这种情况),您可能需要配置 maven 以使用不同的资源目录。

您可以这样做(根据需要更改参数):

getClass().getResourceAsStream("/path/to/resource.ext");
Run Code Online (Sandbox Code Playgroud)

然后,您的文件将位于您的类路径中,并且上面的代码将起作用。请阅读上面的链接文档以获取更多信息。