Salah satu caranya adalah dengan menggunakan properti sistem System.getProperty("user.dir");
ini akan memberi Anda "Direktori kerja saat ini ketika properti diinisialisasi". Ini mungkin yang Anda inginkan. untuk mengetahui di mana java
perintah dikeluarkan, dalam kasus Anda di direktori dengan file yang akan diproses, meskipun file .jar yang sebenarnya mungkin berada di tempat lain di mesin. Memiliki direktori dari file .jar sebenarnya tidak terlalu berguna dalam banyak kasus.
Berikut ini akan mencetak direktori saat ini dari mana perintah dipanggil terlepas dari di mana file .class atau .jar file .class berada.
public class Test
{
public static void main(final String[] args)
{
final String dir = System.getProperty("user.dir");
System.out.println("current dir = " + dir);
}
}
jika Anda masuk /User/me/
dan file .jar Anda yang berisi kode di atas ada di /opt/some/nested/dir/
perintah java -jar /opt/some/nested/dir/test.jar Test
akan keluar current dir = /User/me
.
Sebagai bonus, Anda juga harus menggunakan parser argumen baris perintah berorientasi objek yang baik. Saya sangat merekomendasikan JSAP , Java Simple Argument Parser. Ini akan memungkinkan Anda menggunakan System.getProperty("user.dir")
dan sebagai alternatif meneruskan sesuatu yang lain untuk mengatasi perilaku tersebut. Solusi yang jauh lebih mudah dirawat. Ini akan membuat pengoperan direktori ke proses sangat mudah dilakukan, dan dapat digunakan kembali user.dir
jika tidak ada yang diteruskan.