現在作成中のJavaアプリ(Spring Boot)を、Linux(debian)で実際に運用していくことを考えております。
その際、今まではeclipseで開発と検証し、Linuxの所定箇所に設置後に設置したディレクトリで「Java -jar ***.java」で実行して検証しておりました。
上記の状態でjarファイルと同じディレクトリにおいたファイルの入出力パス指定に困ることはなかったのですが(パスなしファイル名のみを指定)、今日supervisorを導入しアプリを起動した際、パス指定がうまくいかないことに気が付きました。
このような際、jarファイルが設置箇所はどのように取得したらよいのでしょうか。
ネットで調べたところ「System.getProperty("user.dir")」の方法がよく紹介されておりましたが、Linuxで試したところ「/」が取得されるだけでした。
絶対パスは分かっているのでそれを指定する方法もあるのですが、さすがにプログラム設置箇所を変更する度にコードを書き換える必要があるシステムはどうかと思い、今回質問させて頂いております。
なおsupervisorは以下の設定で、supervisor自身はrootユーザーが管理しています。
[program:****] command=java -jar /var/www/App/****/****.jar user=**** autorestart=true stdout_logfile=/var/log/supervisor/****.log stdout_logfile_maxbytes=1MB stdout_logfile_backups=5 stdout_capture_maxbytes=1MB redirect_stderr=true
追記
java.class.path指定でとりあえずLinuxのsupervisor指定で動かすことは出来るようになりました。
ただwindowsでは逆にclasspathが大量に取得され、動かなくなりました。
String jarPath = System.getProperty("java.class.path"); String dirPath = jarPath.substring(0, jarPath.lastIndexOf(File.separator)+1);
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/20 09:05
2015/11/20 09:32
2015/11/20 10:10 編集
2015/11/20 10:21
2015/11/24 13:32