2017-10-30 8 views
0

私はSpringブートアプリケーションを持っています。それは、このファイルを含んでいます文字列リソースファイルを取得するブート

resources/metrics/telefonica/Metrics.xlsx 

を、コードで:私も同じ結果

IでResource telefonicaMetricsTemplate = new ClassPathResource("/metrics/telefonica/Metrics.xlsx");を試してみました

Caused by: java.io.FileNotFoundException: class path resource [metrics/telefonica/Metrics.xlsx] cannot be resolved to absolute file path because it does not reside in the file system: jar:file:/Users/lopes/Documents/workspace-sts-3.9.0.RELEASE/telefonicaUtils/target/telefonicaUtils-0.0.1-SNAPSHOT.jar!/BOOT-INF/classes!/metrics/telefonica/Metrics.xlsx 
    at org.springframework.util.ResourceUtils.getFile(ResourceUtils.java:217) 

@Value(value = "classpath:/metrics/telefonica/Metrics.xlsx") 
private Resource telefonicaMetricsTemplate; 

.. 

Workbook wb = 
      WorkbookFactory.create 
      (telefonicaMetricsTemplate.getInputStream()); 

しかし、私はこのエラーを得ましたアプリを実行しています。コマンドラインから次のように入力します。

java -jar target/telefonicaUtils-0.0.1-SNAPSHOT.jar 

私はこのアプリケーションを実行しています。 Eclipseからそれは正常に動作します

+1

をヨーヨーは*クラスパスを試してみましたか? – PKR

+0

'' classpath:/metrics/telefonica/Metrics.xlsx "'を指定すると、ファイルシステムのルートをチェックすると思います。最初にスラッシュを削除してみてください。リソースフォルダはIDEによって '.'(少なくともintelliJのやり方であると見なされるため)と考えられますので、' classpath:metrics/telefonica/Metrics.xlsx ''やmetrics/telefonica/Metrics.xlsx "または" file:metrics/telefonica/Metrics.xlsx "または" file:./metrics/telefonica/Metrics.xlsx " – Blake

答えて

0

classpath:...file:...に置き換えて絶対パスを指定しようとしましたか?

また、私は、Microsoftのドキュメントを処理するためのApache APIがあることを知っています。あなたの春のブートアプリでそれを使用して、独自のResource豆加えることができます。使用方法のhttps://poi.apache.org/

例:あなたがパスをリソースハードコーディングされているのでhttps://www.concretepage.com/apache-api/read-write-and-update-xlsx-using-poi-in-java

1

を、あなたは、任意の依存性注入を必要とされていません。ただ、ClassPathResourceとしてあなたのリソースを初期化:クラスパス上のすべてのメトリックのディレクトリを検索するには、/メトリクス/テレフォニカ/ Metrics.xlsx:

private Resource telefonicaMetricsTemplate = new ClassPathResource("/metrics/telefonica/Metrics.xlsx"); 
関連する問題