可运行jar中的资源文件位置

时间:2018-11-30 02:54:30

标签: java maven

我有一个Maven项目,该项目的目录src/main/resources下有资源文件。我注意到在Eclipse中,当我运行项目时,源文件被复制到target/classes,而没有资源目录,只是资源目录下的文件。 enter image description here

但是在我使用Right clieck on the project -> Jar -> Runnable Jar将项目导出到可运行的jar之后,这些资源文件位于资源目​​录下:

enter image description here

如您所见,在两种情况下,资源文件位于不同的位置。

及以下代码在Eclipse中运行良好,但在可运行的jar中不起作用

getClassLoader().getResourceAsStream("database.properties")

如何解决这个问题?我希望上面的代码在两种情况下都能工作。

2 个答案:

答案 0 :(得分:0)

不幸的是,这是两个不同的构建过程,大多数项目将使用一个构建系统。付出很多努力却没有带来很多好处。您也可以从Eclipse启动mvn package。我会推荐Maven,因为它是一个标准。如果您必须这样做,这里有一些想法

  • 在启动过程中,测试/resources是否存在,并为所有路径添加前缀
  • 如果是单个文件,则可以测试并退回到第二条路径上
  • 调整pom.xml,将您的资源文件夹放在/ resource

答案 1 :(得分:0)

答案很简单-在类似情况下,不要相信Eclipse或任何IDE。仅考虑将在单独环境中运行的单独构建。使用嵌入在IDE应用程序或Web服务器中的测试也是如此-这是大量潜在问题的根源