我在eclipse中有一个maven web项目。我需要获取项目的路径,实际上需要获取项目中src\main\resources\someFolder
下的文件列表。
在运行String dataDir = "src\\main\\resources\\someFolder";
时,这个目录结构是在F:\softwares\eclipse\eclipse\src\main\resources\someFolder
这样的eclipse文件夹中创建的。使用/
而不是\\
时也是如此。
尝试使用System.getProperty("user.dir")
和new File(".").getAbsolutePath()
时,它们返回F:\softwares\eclipse\eclipse
。
我需要访问工作区F:\workspace\Project\src\main\resources\someFolder
中的项目文件夹
但是,当创建一个核心java应用程序并使用System.getProperty("user.dir")
和new File(".").getAbsolutePath()
时,我得到的是工作区F:\workspace\Project
中的项目路径。这个src\\main\\resources\\someFolder
也可以很好地工作。
为什么eclipse会有这种奇怪的行为呢?
发布于 2017-03-10 10:28:43
如前所述,user.dir
目录是启动here的位置。由于web应用程序大多是jar/war/ear包,因此eclipse会以不同的方式处理它们,因为这样的web应用程序的行为是不同的。您不能期望从jar/war/ear文件外部访问文件。在jar/war/ear文件中,只需使用getResourceAsStream就可以访问src/main/resources中的所有内容,如许多其他堆栈溢出文章中所述。这样你就不能使用src/main/resources/myfile.txt
,而必须使用myfile.txt
。
不要试图猜测或使用user.dir / JVM/server start文件夹!
https://stackoverflow.com/questions/42703523
复制相似问题