当前位置: 代码迷 >> java >> 我的java应用程序没有读取我的文件(maven项目)
  详细解决方案

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

热度:68   发布时间:2023-07-31 10:58:18.0

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

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

在代码中是:

input = new FileInputStream("resources/config.properties");

这也不起作用:

faceDetector = new CascadeClassifierDetector("D:/retinoblastoma/workspace/Resources/CascadeClassifiers/FaceDetection/haarcascade_frontalface_alt.xml");

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

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

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

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

有关更多信息,请参阅此链接:

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

如果你已经正确完成了jar创建部分,那么获取类路径上的文件的正确方法是:

getClass().getResourceAsStream("/path/to/resource.ext");

领先的正斜线很重要!

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

你做 (改变参数如适用):

<build>
  ...
  <resources>
    <resource>
      <targetPath>META-INF/plexus</targetPath>
      <filtering>false</filtering>
      <directory>${basedir}/src/main/plexus</directory>
      <includes>
        <include>configuration.xml</include>
      </includes>
      <excludes>
        <exclude>**/*.properties</exclude>
      </excludes>
    </resource>
  </resources>
  <testResources>
    ...
  </testResources>
  ...
</build>

然后,您的文件将在您的类路径上,上面的代码将工作。 阅读上面的链接文档以获取更多信息。

  相关解决方案