2016-10-01 11 views
0

実際のデータベースの代わりにTreeデータ構造を持つSpringブートMVCアプリケーションを構築しました。プログラムはテキストファイルから読み込み、単語をツリーに格納します。もともと私はCommandLineRunnerクラスを使ってツリーを生成していましたが、これはうまくいきましたが、fat jarを作成してjarファイルを実行した後、例外が見つかりません。どのように私はmavenとテキストファイルを含むmavenとfat jarをビルドできますか?Fat Jar throwing jar内のテキストファイルにアクセスしようとしたときに例外が見つかりません

ファイルは現在プロジェクトルートにあります。ここ

は、ツリーを生成するためのロジックです:ここ

@Component 
@Order(value = Ordered.HIGHEST_PRECEDENCE) 
public class GenerateTree implements CommandLineRunner { 

@Autowired 
TreeRepository trie = new TreeRepository(); 

@Autowired 
FileReader fileReader = new FileReader(); 


@Override 
public void run(String... args) throws Exception { 

    for (String s : fileReader.readFile("wordList1.txt")){ 
     trie.add(s); 
    } 
} 
} 

は、ファイルを読み込みロジックです:

@Component 
public class FileReader { 

List<String> readFile(String filename){ 
    List<String> list = new ArrayList<>(); 
    try (Stream<String> stream = Files.lines(Paths.get(filename))) { 
     list = stream 
       .filter(line -> line.matches("[a-zA-Z]+")) 
       .collect(Collectors.toList()); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 

    return list; 
} 
} 
+0

がどのようにファイルにアクセスしようとしていますか?あなたは関連するコードとスローされている例外を共有できますか? –

答えて

0

あなたはjarファイル内のファイルにアクセスすることはできません(https://stackoverflow.com/a/8258308/4516887を参照してください)。 src/main/resourcesディレクトリにwordlist.txtを入れて、[ClassPathResource][1]使用してその内容をお読みください。

ClassPathResource resource = new ClassPathResource("worldlist.txt"); 
try (InputStream in = resource.getInputStream(); 
    BufferedReader reader = new BufferedReader(new InputStreamReader(in))) { 

    String line; 
    while((line = reader.readLine()) != null) { 
     ... 
    } 
} 
関連する問題