Kepada pengunjung Yang Terhormat

Saya harap anda bahagia dengan postingan di Blog ini. anda senang,saya Melayang

Sunday, 24 January 2021

Classpath pada bahasa pemrograman Java d5asd4a3

 

Classpath pada bahasa pemrograman Java d5asd4a3

Classpath adalah  cara java untuk menemukan di mana fle jar yang berisi  library class yang digunakan dalam aplikasi. Kalau class yang digunakan tidak ditemukan dalam classpath, maka java akan mengeluarkan ClassNotFoundException. Kesalahan ini sering kali terjadi dan kita bisa langsung menyimpulkan bahwa class yang diperlukan tidak berada dalam classpath. Newbie  sering  kebingungan  dengan  error  ini,  maka  saya  merasa  perlu  untuk  menerangkan konsep  classpath  dengan  sedikit  panjang  lebar  agar  tidak  terjadi  kebingungan.  Newbie  yang belajar  membuat  aplikasi  dari  awal  menggunakan  IDE  seperti  NetBeans  sering  kebingungan ketika akan menginstall aplikasi, biasanya pertanyaan yang muncul adalah bagaimana membuat versi exe dari aplikasi java yang sudah dibuat. Saya bisa menjamin bahwa membuat exe dari program  java  yang  sudah  dibuat  adalah  tindakan  sia  sia,  pertama  karena  malah  akan menghilangkan  feature  utama  java  :  run  anywhere,  ingat  exe  tidak  bisa  jalan  di  OS  selain windows. Kedua karena convert java ke exe tidak gampang, perlu tools yang mahal harganya dan tidak ada jaminan bahwa hasil convert ke exe akan bisa jalan mulus seperti aslinya.  Nah kalau tidak diconvert ke dalam exe bagaimana cara membuat launcher agar user tinggal klik dua kali dan aplikasi jalan? Jawabanya adalah dengan membuat fle bat di windows atau fle sh di  selain  windows.  Di  dalam  fle  bat  /  sh  tersebut  terdapat  command  line  untuk  menjalankan aplikasinya. Untuk membuatnya diperlukan sedikit pengetahuan tentang classpath ini.

Di bagian sebelumnya kita sudah belajar membuat sebuah fle jar yang berisi dua buah class :

Person dan PersonDao, nah kita sekarang akan membuat sebuah class lagi yang akan mengimport class Person dan mempunyai main method agar bisa dijalankan. Namakan saja classnya adalah ClasspathExercise, kemudian simpan class ini di folder yang berbeda dengan folder sebelumnya.

Misalnya folder sebelumnya ada di c:\sample-code, buat lagi sebuah folder kosong di c:\samplecode-classpath.

import

com.googlecode.projecttemplate.pos.model.Person;

public

class  ClasspathExercise{

 

 public void main(String[] args){

 

   Person p = new Person();

 

   p.setName("ini nama person");

 

   System.out.println(p.getName());

 

 }

}

Compile class di atas menggunakan javac

$ javac  ClasspathExercise.java

kalau  class  di  atas  dijalankan  seperti  di  bawah  ini  tanpa  classpath  maka  akan  keluar

ClassNotFoundException :

$ java ClasspathExercise

Exception in thread "main" java.lang.NoClassDefFoundError:

com/googlecode/projecttemplate/pos/model/Person

        at ClasspathExercise.main(ClasspathExercise.java:4)

Caused by: java.lang.ClassNotFoundException:

com.googlecode.projecttemplate.pos.model.Person

        at java.net.URLClassLoader$1.run(URLClassLoader.java:202)

        at java.security.AccessController.doPrivileged(Native Method)

        at java.net.URLClassLoader.findClass(URLClassLoader.java:190)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)

        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)

        at java.lang.ClassLoader.loadClass(ClassLoader.java:248)

        ... 1 more

Classpath seperti yang sudah kita bahas di atas, digunakan untuk memberitahu java di mana bisa menemukan class-class yang dibutuhkan. Nah kalau cara menjalankan kodenya diganti dengan seperti di bawah ini :

$ java -cp c:\sample-code\pos.jar;. ClasspathExercise

ini nama person

$

Perhatikan command line di atas, terdapat argumen -cp yang menandakan bahwa kita akan mendefnisikan daftar classpath. File jar dan folder bisa dimasukkan sebagai daftar classpath, seperti contoh di atas kita mendaftarkan fle jar c:\sample-code\pos.jar dan folder yang sedang aktif,  diwakili dengan tanda titik (.).  Kalau anda bekerja di linux / unix terdapat perbedaan di tanda pemisah antar classpath, kalau windows menggunakan titik koma(;), OS selainya menggunakan titik dua(:) seperti di bawah ini

$ java -cp /Users/ifnu/sample-code/pos.jar:. ClasspathExercise

ini nama person

$

Kita juga bisa menggunakan relative path supaya tidak terjadi error kalau flenya dipindahpindah ke folder lain

:

$

java -cp ../sample-code/pos.jar:. ClasspathExercise

ini

nama person

$

Nah  kembali  lagi  ke  masalah  fle  bat  /  sh  yang  sudah  kita  bahas  sebelumnya.  Kita  bisa meletakkan perintah di atas ke dalam fle ini dan mengeksekusi kedua fle tersebut layaknya executable fle.

Perintah di atas bisa sedikit diubah menjadi seperti di

bawah ini :

$ java -cp ../sample-code/*.jar:. ClasspathExercise

ini nama person

$

 

No comments:

Post a Comment

iklan popcash