IntelliJ IDEA新文件(...)使用Workspace目录作为root而不是git repository目录

时间:2015-03-23 11:27:37

标签: java file intellij-idea resources

我刚刚从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实现?

1 个答案:

答案 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());

根据项目类型,独立版或网络应用程序使用上述代码段。