我刚刚从Eclipse Luna迁移到IntelliJ IDEA 14.0.3,我遇到了为资源创建新的File(...)对象的问题。 这是我的设置:
\dev\git\myproject\src\main\resources\myfile.txt is the resource I want to read
\dev\idea\workspace\myproject contains my IDEA project
这意味着我在一个目录中创建了一个IDEA项目,并导入了位于我的git存储库目录中的my(maven)项目。 现在,当我使用以下语句创建一个新的File对象时
inputFile = new File("src/main/resources/myfile.txt");
这将产生以下路径:
\dev\idea\workspace\myproject\src\main\resources\myfile.txt
但是,我想从
中检索资源\dev\git\myproject\src\main\resources\myfile.txt
Eclipse用于正确设置目录但是如何使用IDEA实现?
答案 0 :(得分:0)
问题不在于IntelliJ,而在于您尝试访问该文件的方式。
根据您的问题,我可以看到您使用maven并且您在src / main / resources中有一个文件,您想要访问该文件。
根据Maven,当你在src / main / resources中有一个文件时,它也意味着该文件也可以在classpath中使用(参见Maven文件夹结构以了解更多信息)。
但是您尝试使用相对路径(包括maven文件夹结构)访问该文件,并且在打包项目时此代码将不起作用。由于maven将排除jar / war / ejb或任何其他包中的文件夹(src / / )并仅包含资源。
您应该尝试从classpath访问该文件,这是正确的方法,最重要的是,即使在打包您的项目后它也能正常工作。
尝试用
代替代码inputFile = new File(this.getClass().getClassLoader().getResource("myfile.txt").getFile());
或
inputFile = new File(Thread.currentThread().getContextClassLoader().getResource("myfile.txt").getFile());
根据项目类型,独立版或网络应用程序使用上述代码段。