Cara Mengatasi Aplikasi Java Error Saat Pindah Komputer

Mungkin banyak teman-teman yang sudah tidak asing lagi bagaimana caranya menambahkan suatu library kedalam IDE NetBeans, yups caranya sih sangat mudah yaitu tinggal klik kanan node Library di Project Inspector kemudian pilih Add JAR/Folder seperti gambar dibawah ini:

AddLibrary



Sebenarnya sih tidak ada yang salah dengan cara seperti diatas, tetapi akan bermasalah kalau kita sering membagikan contoh project atau prototype project kita ke teman-teman yang lain atau misalkan secara tidak sengaja seluruh folder project tersebut ikut ter-commit ke repository :D Nah efek samping dari cara diatas yaitu :
  1. Jika teman kita tidak menginstal NetBeans tetapi hanya menginstal apache-ant saja, project yang kita berikan tidak mungkin langsung berhasil dijalankan karena ada beberapa library yang dibutuhkan tidak diketemukan didalam classpath.
  2. Ketika teman kita membuka contoh project yang kita berikan dari IDE NetBeans, bisa dipastikan NetBeans pasti mengeluarkan Warning Message yang menandakan bahwa ada beberapa library yang tidak diketemukan. Dan solusinya kita harus me-Resolve Reference Problem permasalahan tersebut dengan cara seperti gambar dibawah ini ( Apakah teman-teman pernah mengalami kasus seperti ini ? Saya pernah mengalaminya malu ) : ResolveReferenceProblem

Agar NetBeans tidak mengeluarkan pesan seperti diatas ketika kita memberikan contoh project atau prototype project kita ke seorang teman, ada 1 file yang perlu kita edit dahulu supaya library yang akan digunakan di project kita menjadi lebih portable. File tersebut yaitu private.properties yang terdapat di dalam folder NamaProject/nbproject/private seperti gambar dibawah ini:

privateprop



Sudah tahu dimana letak permasalahannya ?? Yups NetBeans membuat full path pada file private.properties ke library yang kita gunakan yang dapat kita lihat pada baris 1 dan 2 seperti dibawah ini:

1
2
3
4
file.reference.ibatis-dao-2.jar=/home/anton/NBPortableClasspath/lib/ibatis-dao-2.jar
file.reference.ibatis-sqlmap-2.jar=/home/anton/NBPortableClasspath/lib/ibatis-sqlmap-2.jar
jaxws.endorsed.dir=/opt/netbeans-6.0.1/java1/modules/ext/jaxws21/api
user.properties.file=/home/javamaniac/.netbeans/6.0/build.properties

Agar project kita dapat berjalan mulus di komputer teman kita yang hanya menginstal apache-ant maupun NetBeans, edit saja file private.properties diatas menjadi seperti berikut :

1
2
3
4
file.reference.ibatis-dao-2.jar=lib/ibatis-dao-2.jar
file.reference.ibatis-sqlmap-2.jar=lib/ibatis-sqlmap-2.jar
jaxws.endorsed.dir=/opt/netbeans-6.0.1/java1/modules/ext/jaxws21/api
user.properties.file=/home/javamaniac/.netbeans/6.0/build.properties
 
Setelah selesai melakukan pengeditan pada file private.properties, sekarang cobalah untuk melakukan proses build dari NetBeans. Jika tidak ada pesan error yang muncul, sekarang mari kita coba kopikan folder project diatas ke komputer lain yang berbeda sistem operasinya dan di komputer tersebut hanya terinstal JDK plus apache-ant saja. Dan dibawah ini adalah hasilnya :

Ini output di Windows setelah kita melakukan pengeditan diatas :
 
D:/NBPortableClasspath>type D:/NBPortableClasspath/nbproject/private/private.properties
file.reference.ibatis-dao-2.jar=lib/ibatis-dao-2.jar
file.reference.ibatis-sqlmap-2.jar=lib/ibatis-sqlmap-2.jar
jaxws.endorsed.dir=/opt/netbeans-6.0.1/java1/modules/ext/jaxws21/api
user.properties.file=/home/javamaniac/.netbeans/6.0/build.properties

D:/NBPortableClasspath>ant -p
Buildfile: build.xml
Builds, tests, and runs the project NBPortableClasspath.
Main targets:

 clean        Clean build products.
 compile      Compile project.
 debug        Debug project in IDE.
 default      Build and test whole project.
 jar          Build JAR.
 javadoc      Build Javadoc.
 run          Run a main class.
 test         Run unit tests.
 test-single  Run single unit test.
Default target: default
D:/NBPortableClasspath>ant clean run
Buildfile: build.xml

-pre-pre-compile:
    [mkdir] Created dir: D:/NBPortableClasspath/build/classes

-do-compile:
    [javac] Compiling 3 source files to D:/NBPortableClasspath/build/classes

compile:

run:

BUILD SUCCESSFUL
Total time: 4 seconds
D:/NBPortableClasspath>
Dan dibawah ini output kalau kita tidak mengedit file private.properties :
D:/NBPortableClasspath>type D:/NBPortableClasspath/nbproject/private/private.properties
file.reference.ibatis-dao-2.jar=/home/anton/NBPortableClasspath/lib/ibatis-dao-2.jar
file.reference.ibatis-sqlmap-2.jar=/home/anton/NBPortableClasspath/lib/ibatis-sqlmap-2.jar
jaxws.endorsed.dir=/opt/netbeans-6.0.1/java1/modules/ext/jaxws21/api
user.properties.file=/home/javamaniac/.netbeans/6.0/build.properties
D:/NBPortableClasspath>ant -p
Buildfile: build.xml
Builds, tests, and runs the project NBPortableClasspath.
Main targets:

 clean        Clean build products.
 compile      Compile project.
 debug        Debug project in IDE.
 default      Build and test whole project.
 jar          Build JAR.
 javadoc      Build Javadoc.
 run          Run a main class.
 test         Run unit tests.
 test-single  Run single unit test.
Default target: default
D:/NBPortableClasspath>ant clean run
Buildfile: build.xml
-do-clean:
   [delete] Deleting directory D:/NBPortableClasspath/build

-pre-pre-compile:
    [mkdir] Created dir: D:/NBPortableClasspath/build/classes

-do-compile:
    [javac] Compiling 3 source files to D:/NBPortableClasspath/build/classes
    [javac] D:/NBPortableClasspath/src/nbportableclasspath/TesDaoImpl.java:8: pa
ckage com.ibatis.dao.client does not exist
    [javac] import com.ibatis.dao.client.DaoManager;
    [javac]                             ^
    [javac] D:/NBPortableClasspath/src/nbportableclasspath/TesDaoImpl.java:9: pa
ckage com.ibatis.dao.client.template does not exist
    [javac] import com.ibatis.dao.client.template.SqlMapDaoTemplate;
    [javac]                                      ^
    [javac] D:/NBPortableClasspath/src/nbportableclasspath/TesDaoImpl.java:17: c
annot find symbol
    [javac] symbol: class SqlMapDaoTemplate
    [javac] public class TesDaoImpl extends SqlMapDaoTemplate implements TesIbat
isDaoJar {
    [javac]                                 ^
    [javac] D:/NBPortableClasspath/src/nbportableclasspath/TesIbatisDaoJar.java:
8: package com.ibatis.dao.client does not exist
    [javac] import com.ibatis.dao.client.Dao;
    [javac]                             ^
    [javac] D:/NBPortableClasspath/src/nbportableclasspath/TesIbatisDaoJar.java:
16: cannot find symbol
    [javac] symbol: class Dao
    [javac] public interface TesIbatisDaoJar extends Dao {
    [javac]                                          ^
    [javac] D:/NBPortableClasspath/src/nbportableclasspath/TesDaoImpl.java:19: c
annot find symbol
    [javac] symbol  : class DaoManager
    [javac] location: class nbportableclasspath.TesDaoImpl
    [javac]     public TesDaoImpl(DaoManager daoManager) {
    [javac]                       ^
    [javac] 6 errors

BUILD FAILED
D:/NBPortableClasspath/nbproject/build-impl.xml:323: The following error occurr
ed while executing this line:
D:/NBPortableClasspath/nbproject/build-impl.xml:158: Compile failed; see the co
mpiler error output for details.

Total time: 2 seconds
D:/NBPortableClasspath>
 
Perhatian kalau ingin benar-benar portable ( No NetBeans Locking ):
Buatlah sebuah folder khusus untuk menampung seluruh library yang akan dipakai dan tempatkan folder tersebut di bawah folder project seperti gambar dibawah ini :

folderlib



Usahakan jangan menggunakan library yang ditambahkan lewat Library Manager meskipun library tersebut standart bawaan NetBeans. Karena kalau kita menggunakan library bawaan NetBeans, maka NetBeans akan menuliskan fullpath ke library yang kita gunakan pada file project.properties seperti pada gambar dibawah ini :

ViaLibraryManager



Apa akibatnya jika kita memberikan project tersebut pada teman yang tidak menginstal NetBeans ? Hasilnya sudah bisa ditebak diluar kepala, pasti akan error karena NetBeans menambahkan full path ke library yang digunakan oleh project tersebut sedangkan library-nya tidak terdapat pada komputer teman kita :)

So, happy NetBeaning guy’s :)

Artikel Lainnya