我在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}}
我该如何解决这个问题?
答案 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>
然后,您的文件将在您的类路径上,上面的代码将起作用。阅读上面的链接文档以获取更多信息。