2017-05-25 9 views
0

パッケージ化された(jar)Springブートjarアプリケーションの相対パスの場所はどのように設定できますか?パッケージ化されたSpringブートアプリケーションへの相対パスはどこですか

以下は私のIDE(IntelliJ)で動作するものです。

私のapplication.propertiesファイルには、次のプロパティがあります。

converter.output=upload-dir/output/ 
converter.input=upload-dir 

私のプロパティを制御するJavaクラスがあります。

@Component 
@ConfigurationProperties("converter") 
public class ConverterProperties { 

//getters 
//setters 

} 

私はIDE内に次のディレクトリ構造を持っています。

src/ 
target/ 
upload-dir/ 
upload-dir/output/ 
pom.xml 
README.txt 

しかし、私はjarファイルを生成し、フォルダからそれを実行したときに、私のアップロード-dirとアップロード-DIR /出力フォルダはどこだろう知りたいですか?私は瓶と同じ場所にフォルダを置こうとしました

C:\app\app.jar 
C:\app\upload-dir\ 
C:\app\upload-dir\output\ 

しかし、サイコロはありません。このドキュメントに基づいて@ConfigurationPropertiesをセットアップしました。 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.htmlしかし、私はパッケージ内のjar相対パスについて話していたところでどこにも見つからないようです。

答えて

2

一般的なスプリングブートアプリケーションでは、情報レベル({workdir}の{user}によって開始されたPID 1234({jarpath})で{host}の{Application} {Starting Application}}の最初の行に、 })

StartupInfoLoggerのソースコードを見ると、実行中のSpringブートのJARファイルの絶対パスを取得するためにApplicationHomeヘルパークラス(org.springframework.bootパッケージ内)を使用する必要があるようですアプリケーション。

jarファイルの場所とjarファイルを含むディレクトリを取得するJavaコードの例を次に示します。これを使用してuploadDirファイルを作成しますあなたは春ブーツアプリで実行中のアプリケーションのクラスの1つの中からこれを実行したいのjarディレクトリのサブディレクトリ)

ApplicationHome home = new ApplicationHome(this.getClass()); 
File jarFile = home.getSource(); 
File jarDir = home.getDir(); 
File uploadDir = new File(jarDir, "upload-dir"); 

。そのクラスを含むjarを見つけるためにApplicationHomeのコンストラクターに渡されたクラスを使用するように見えます。

+0

ありがとうございました。それが私に正しい方向性と最終的な解決策をもたらしました。 –

関連する問題