50226


【バージョン関連】  
springBoot：2.1.0.RELEASE  
Gradle：4.8.1  
poi：3.17  
java:8

spring bootにて、poiを使ったエクセルファイルの取り扱いをしております。  
Controllerクラスにて、「ExcelBuilder/files/template.xlsx」を参照していますが、  
jarファイルにて実行するとresource変数がnullとなってしまいます。

intellijにてアプリケーションを実行すると、問題なく動くのですが、  
jarファイルにした場合は、何か考慮すべきことがあるのでしょうか。

よろしくお願い致します。

[code]

    try {
    
      Resource resource = resourceLoader.getResource("classpath:files/template.xlsx");
    
      mav = new ModelAndView(new ExcelBuilder(resource.getFile()));
    
    } catch (IOException e) {
      e.getStackTrace();
    }
    
[/code]

ExcelBuilderにFileを渡して、Excel操作しています。


CC BY-SA 4.0
2018-11-11T23:51:55.207
50224
2018-11-12T02:35:22.927
2018-11-11T23:57:01.297
19110
30948
question
excel spring-boot gradle apache-poi jar
gradleにて作成したjarファイルの中のテンプレート参照がうまくいきません。


自己解決しました。

Ideとjarではファイルの読み込み方を変えなければならないとのことでした。  
下記、変更後のコードです。  
ありがとうございました。

[code]

    File file = null;
    String resourceStr = "/files/template.xlsx";
    URL res = getClass().getResource(resourceStr);
    
    // IDE実行とjarファイル実行で分岐させる
    if (res.toString().startsWith("jar:")) {
      try {
        InputStream input = getClass().getResourceAsStream(resourceStr);
        file = File.createTempFile("tempfile", ".tmp");
    
        FileUtils.copyInputStreamToFile(input, file);
    
        file.deleteOnExit();
      } catch (IOException e) {
        e.getStackTrace();
      }
    } else {
      // IDE用
      file = new File(res.getFile());
    }
    
    if (file != null && !file.exists()) {
      throw new RuntimeException("Error: File " + file + " not found!");
    }
    mav = new ModelAndView(new ExcelBuilder(file));
    
    return mav;
    
[/code]


CC BY-SA 4.0
2018-11-12T00:38:24.573
50226
2018-11-12T02:35:22.927
2018-11-12T02:35:22.927
29826
30948
50224
answer