Coding

Portabilitas SQLite dan Penyebab Error java.sql.SQLException: path to ‘bla.. bla..’ does not exist

https://www.valuecoders.com/blog/wp-content/uploads/2019/04/javanewfeat-1.jpeg

Untuk membuat sebuah aplikasi desktop – Java, dengan kebutuhan transaksi sederhana, tanpa hubungan client-server a.k.a hanya main local-an saja, SQLite adalah pilihan yang tepat karena performanya(cepat dan ringan).

Ketika menghubungkan aplikasi dengan SQLite umumnya pada tutorial-tutorial yang ada adalah dengan cara seperti ini.

atau, seperti ini (tergantung nama file-nya).

Dalam kasus ini, sy menggunakan IDE faforit sy yaitu Intellij IDEA Community Edition.

Ketika project di Run dari IDE berjalan dengan lancar. Namun ketika di build menjadi app.jar, kemudian dijalankan, terjadi error kurang lebih semacam ini:

Mengapa terjadi?

Ketika kita run dengan meng-klik tombol run dari IDE, working directory-nya berada pada direktori project atau sesuai konfig anda saat create project.

Namun ketika project sudah di build menjadi app.jar, working directory-nya bukan lagi di dalam project directory. Tapi berada di direktori dimana app.jar itu berada. Biasanya di <project name>/out/artifacts/project_name_jar/

Saya terbiasa mengatur app direktori seperti ini.

Bagaimana Triknya.. 🤓

Agar data.sqllite lebih portable mengikuti working directory app.jar berada, sy mengakalinya dengan trik berikut ini dan terbukti LANCAR JAYAA..

Pada kelas System Utilities milik Java, ada sebuah method untuk mendapatkan user directory yaitu System.getProperty(“user.dir”).

Nah, ini bisa kita manfaatkan.

Run di laptop sy dg OS Linux Mint lancar jaya. Wal hamdulillah ‘ala ni’matillah..

Eiits, tapi urusanya belum selesai. Ternyata test di Windows 7 masih error no such file or directory.

Saya ubah jadi seperti ini:

Wal hamdulillah, lantjar djaja. Nanti malam sudah bisa tidur nyenyak.

Semoga bermanfaat.

Referensi:

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.