【发布时间】:2018-11-12 17:27:17
【问题描述】:
鉴于以下项目设置,运行./gradlew run 通过读取资源文件正确打印出Hello World,但./gradlew installDist && ./build/install/appresourcetest/bin/appresourcetest 没有,因为它找不到资源文件。为什么会这样?如何在继续使用 installDist 任务的同时解决此问题?
由于资源在 jar 中,这可能与 installDist 的包装脚本的类路径设置有关,但我的理解到此为止。
/build.gradle:
plugins {
id 'java'
id 'application'
}
group 'com.example.application'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
mainClassName = "demo.Main"
repositories {
mavenCentral()
}
dependencies {
}
/settings.gradle:
rootProject.name = 'appresourcetest'
/src/main/resources/test.txt
Hello World
/src/main/java/demo/Main.java
package demo;
import java.io.File;
import java.io.IOException;
import java.util.Scanner;
public class Main
{
public static void main(String[] args) {
//should not fail:
String content = getFile("test.txt");
System.out.println(content);
}
//code taken from:
//https://www.mkyong.com/java/java-read-a-file-from-resources-folder/
private static String getFile(String fileName) {
StringBuilder result = new StringBuilder("");
//Get file from resources folder
ClassLoader classLoader = Main.class.getClassLoader();
File file = new File( classLoader.getResource( fileName).getFile());
try (Scanner scanner = new Scanner( file)) {
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
result.append(line).append("\n");
}
scanner.close();
} catch ( IOException e) {
e.printStackTrace();
}
return result.toString();
}
}
【问题讨论】:
标签: java gradle build.gradle