我在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
也可以正常工作。
为什么这个来自日食的奇怪行为?
答案 0 :(得分:0)
如上所述here,目录user.dir
是JVM启动的地方。由于Web应用程序主要是放在服务器文件夹中某处的jar / war / ear包,因此eclipse以不同的方式处理它们,因为这种Web应用程序的行为是不同的。您不能指望从jar / war / ear文件外部访问文件。在jar / war / ear文件中,src / main / resources中的所有内容都可以通过使用getResourceAsStream来获得,如许多其他stackoverflow文章中所述。这样您就不能使用src/main/resources/myfile.txt
但myfile.txt
。
请勿尝试猜测或使用user.dir / JVM / server启动文件夹的内容!