Gradle 找到了资源文件,但 Eclipse 没有找到 [重复]

Posted

技术标签:

【中文标题】Gradle 找到了资源文件,但 Eclipse 没有找到 [重复]【英文标题】:Resources file is found by Gradle but not by Eclipse [duplicate] 【发布时间】:2015-06-01 10:13:18 【问题描述】:

在我的 gradle java 项目中,如果我运行./gradlew run -PappArgs="['file.dat']",它会被编译并且我的应用程序成功使用位于/src/main/resources/ 中的文件。我已将 Eclipse 与 gradle 集成,并将我的项目导入 Eclipse。当我在 Eclipse 中使用项目的 Run Configurations 参数列表中指定的 filname 运行应用程序时,它无法使用以下代码找到 file.dat

import java.io.InputStream;
import java.util.Scanner;
public class MyClass 
    public static void main(String[] args) 
        final String fileName = args[0];
        Scanner scanner = null;
        try 
            InputStream f = MyClass.class.getResourceAsStream(fileName);
            scanner = new Scanner(f, "UTF-8"); // fails here saying f is null
         finally 
            if (scanner != null) scanner.close();
        
    

项目树是经典的:myproj/src/main/java/MyClass.javamyproj/src/main/resources/file.datmyproj/src/test/java/MyTest.java

【问题讨论】:

你是否在eclipse启动配置中将参数传递给gradle?或者直接在 java 启动配置中,如果你没有使用 gradle 运行? 我在 Eclipse 中我的项目的运行配置中传递参数,我尝试了几种方法/src/main/resources/file.datfile.dat./src/main/resources/file.dat。没有任何效果。在 gradle 中,我在命令行中传递了我的参数 file.dat 您的Class 在包裹中吗? (类路径的根是src/main/resources;所以如果你想使用MyClass.class.getResource 加载并且MyClass 在包com.example 中,你的文件必须进入src/main/resources/com/example。或者更好地使用InputStream is = this.getClass().getClassLoader().getResourceAsStream(fileName) 我在static main,所以不能使用this。没有包裹。我所有的课程都在/src/main/java/ 文件夹中并使用默认包。 【参考方案1】:

Eclipse 的挫折和祝福:您的所有资源(包括文件和图片)都必须位于项目的构建路径中。确保确实如此。如果仍然是这种情况,请考虑不要使用查找要读取的文件的方法:一种好的旧时尚

Scanner in=new Scanner(new File("src/main/resources/file.dat"));
通常会起作用。我希望这对您有所帮助,并祝您好运。

【讨论】:

那么没有必要将 gradle 项目导入 eclipse 并使用所有文件都转到必须可用于环境的资源文件夹的约定。 我遇到了这个,觉得要详细说明一下。确实,Eclipse 很固执,总是需要自己的构建文件。但是,gradle eclipse 命令将为您生成 eclipse .classpath 文件。您只需要将项目导入为 Gradle 项目,或者如果您已经这样做了则刷新它们。

以上是关于Gradle 找到了资源文件,但 Eclipse 没有找到 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

停止 Eclipse/Gradle 生成 .project 和 .settings/

eclipse怎么配置gradle

Gradle 资源文件乱码解决

从 Eclipse 生成 Gradle 构建文件,出现错误:需要 Gradle 版本 1.10

如何使用Gradle为Android项目生成Eclipse和Intellij项目文件

android studio怎么导出jar包