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

时间:2015-07-17 01:13:18

标签: java eclipse file maven

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

  

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

在代码中是:

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

这也不起作用:

{{1}}

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

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

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

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

请参阅此链接以获取更多信息: Reading properties file

答案 1 :(得分:3)

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

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

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

领先的正斜线很重要!

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

你这样做like this(根据需要更改参数):

<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>

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