Users  

   

Hobi  

   

Statistik  

Visitors
232
Articles
59
Articles View Hits
394917
   

User Online  

We have 57 guests and no members online

   

BAB III.2

Details

Classpath
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:\sample-
code-classpath.


import com.googlecode.projecttemplate.hmti.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/hmti/model/Person
        at ClasspathExercise.main(ClasspathExercise.java:4)
Caused by: java.lang.ClassNotFoundException:
com.googlecode.projecttemplate.hmti.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\hmti.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\hmti.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 dipindah-
pindah ke folder lain :


$ java -cp ../sample-code/hmti.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.
Setelah java 6 terdapat feature wildcard di classpath, dimana kita bisa menginclude semua fle
jar yang ada dalam sebuah folder. Sebelum feature ini ada, kita harus mendaftarkan semua fle
jar satu per satu ke dalam classpath. Perintah di atas bisa sedikit diubah menjadi seperti  di
bawah ini :


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


Sampai   di   sini   kita   sudah   belajar   hal-hal   dasar   tentang   class,   package,   import,   jar   dan classpath. Berikutnya kita akan belajar lebih banyak tentang bahasa java dan OOP.


sumber : ifnu bima

Add comment


Security code
Refresh

   

Indeks  

   
© ALLROUNDER