При следующих настройках проекта, ./gradlew run
правильно печатает Hello World
, читая файл ресурсов, а ./gradlew installDist && ./build/install/appresourcetest/bin/appresourcetest
- нет, так как не может найти файл ресурсов. Почему, и как я могу решить эту проблему, продолжая использовать задачу installDist
?
Поскольку ресурс находится внутри фляги, это, вероятно, как-то связано с настройкой пути к классам 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 / главная / ресурсы / test.txt
Hello World
/ SRC / главная / Java / демо / 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();
}
}