したがって、基本的には、「user.dir」プロパティについてググったら、stackexchangeで同様の質問にこのリンクを取得しました。 Java「user.dir」プロパティ-正確には何を意味するのですか?
つまり、基本的に答えは次のとおりです。これは、Javaが実行されたディレクトリであり、JVMを起動した場所です。ユーザーのホームディレクトリ内にある必要はありません。ユーザーがJavaを実行する権限を持っている場所ならどこでもかまいません。
これは問題ありませんが、Androidコンテキスト: System.getProperty(“ user.dir”)が「/」を返す理由) としてこの他のリンクを見つけましたドキュメンテーションは言う、user.dir
プロパティはユーザーの作業ディレクトリであり、apkが配置されているディレクトリと同じである必要はありません。
したがって、最初のリンクで最初に投票された回答は、ディレクトリがユーザーのホームディレクトリ内にある必要がないことを示し、もう1つは「ユーザーの作業ディレクトリです」と述べています。
今私はひどく混乱しており、これについて助けが必要です。
ホームディレクトリは、userに関連付けられています(ユーザーMIkeの場合、これは/home/mike
)。
作業ディレクトリは、実行中のprocess;に関連付けられています。シェルでは、これは多くの場合プロンプトの一部として出力されます。他のプロセスの場合、通常、直接観察する方法はありません。ユーザーは通常、ホームディレクトリでシェルセッションを開始しますが、そこから離れることができます。
Javaがインストールされているディレクトリは、3番目の無関係なものです(およびJavaアプリケーションまたはライブラリがインストールされているディレクトリは、別の、無関係な4番目の可能性がありますディレクトリ)。しかし documentation が言うように、
デフォルトでは、Java.ioパッケージのクラスは常に、現在のユーザーディレクトリに対する相対パス名を解決します。このディレクトリはシステムプロパティuser.dirによって名前が付けられ、通常はJava仮想マシンが呼び出されたディレクトリです。
言い換えると、 user.dir
は、プロセスの開始時にJavaプロセスを開始したプロセスの作業ディレクトリです。これがシェルの場合は、シェルユーザーが最後に切り替えた先のディレクトリです。Javaがウィンドウマネージャなどの別のプログラムから呼び出された場合は、そのプログラムが機能していたものです。ディレクトリ。
前の回答でuser.dirが「現在のユーザーディレクトリ」であると述べているように、次の例を見てください。
cd/path/to/your/jar
$ Java_HOME/bin/Java -jar myprogram.jar
(user.dir =/path/to/your/jar)
cd $ Java_HOME/bin
Java -jar /path/to/your/jar/myprogram.jar
(user.dir = $ Java_HOME/bin)
cd〜
$ Java_HOME/bin/Java -jar /path/to/your/jar/myprogram.jar
(user.dir =ユーザーのホームディレクトリ)