RSS

Biên dịch Java

03 Dec

Mở java –>code –> sửa code –> debug –> build. Nhưng khi không không thể xài công cụ hổ trợ thì ít ai có thể làm được việc là biên dịch nó trên dòng lệnh. Sau đây mình chia sẽ một số kinh nghiệm để biên dịch một chương trình từ một project các file java.

Nội dung chính:

  • Thêm biến môi trường
  • Biên dịch .java thành .class
  • Biên dịch .class thành .jar

Thêm biến môi trường

Biến môi trường làm nơi chúng ta đặt các thư mục ta có thể truy xuất nhanh đến các thư mục đó khi ta dùng cửa sổ dòng lện. Trên cửa sổ dòng lệnh, nếu chúng ta không khai báo rõ đường dẫn thì hệ điều hành sẽ tự động tìm các lệnh đó trong các thư mục được khai báo trong biến môi trường.

Sau khi cài bộ jdk (Java Development Kit) bạn cần đưa thư mục bin của nó vào biến môi trường. Nếu bạn cài jdk 6.0.21 thì thư mục bin của nó sẽ là:

C:\Program Files\Java\jdk1.6.0_21\bin

Trên windows 7, chọn phải chuột -> Properties -> Advanced system settings (bên trái)-> Environment Variables -> chọn biến môi "Path": hộp thoại sẽ hiện như cửa sổ "Edit System Variable" dưới

clip_image001

Các biến môi trường sẽ cách nhau bằng dấu chấm phẩy (;) bạn thêm vào cuối đường dẫn thư mục bin : C:\Program Files\Java\jdk1.6.0_21\bin ->OK

clip_image002

Biên dịch .java thành .class

Giả sử ta có các file cần biên dịch nằm trong thư mục D:\net\cowboy90\server .Và file chạy sẽ nằm có tên là Main.java . Biên dịch các file đó thành .class bằng cách: Trên thư mục trên cùng là D:\ ta mở cửa số command line sau đó gõ lệnh:

Javac -d \<thư mục chứa file đã biên dịch> net\cowboy90\server\*.java

clip_image003

Chú ý: Khi bạn tạo ra một file java có package ví dụ là net.cowboy.server thì bạn nên tạo một hệ thống thư mục như vậy, ra đến thư mục trên cùng chứa tất cả thư mục đó rồi mới biên dịch nó để khi bạn có sử dụng hàm ở các thư mục khác thì nó vẫn biên dịch được mà không xuất hiện lỗi.

Đây là một ví dụ tạo ra lỗi vì không tìm ra Các class ở các package khác

clip_image004

Sau khi biên dịch thành công thì sẽ không báo lỗi gì và các file .class sẽ được tạo vào thư mục D:\build\net\cowboy90\server . Ở đây tôi sẽ tạo thêm một số package bổ trợ cho package này là Protocol, Account cũng bằng lệnh như vậy

clip_image005

Bây giờ ta đã có một thư mục chứa các file đã biên dịch nằm sâu trong các thư mục chứa trong thư mục D:\build . Chú ý là trong java thì các thư mục tương ứng với một tầng của package

Biên dịch .class thành .jar

Để thuận tiện thì chúng ta sẽ biên dịch bằng file chương trình hệ thống .bat

Bạn cần di chuyển vào thư mục chứa package và các file của nó. Ở đây là D:\build vì các thư mục bên trong là hệ thống các tầng của package của class

Tạo file bat có nội dung:

echo Manifest-Version: 3.3>Manifests.mf

 

echo Created-By: "hotdream1990">>Manifests.mf

 

echo Specification-Title: "Chat Server">>Manifests.mf

 

echo Main-Class: net.cowboy90.server.Main>> Manifests.mf

 

jar cvfm server.jar Manifests.mf .\net server.properties

 

Chú ý : 3 dòng đầu nếu bạn không ghi thì hệ thống sẽ tự động điền thông tin mặc định vào đó. Dòng 4 phải chắc chắn chính xác vì đây là khai báo main class sẽ chạy khi khởi động. Dòng thứ 5 khởi động chương trình biên dịch ra file jar.

Trong lệnh jar bạn cần quan tâm Manifest.mf là khai báo các thông tin muốn đi kèm theo package, .\net gói tất cả các gói tin trong thư mục này; bạn cũng có thể viết .\ để đóng gói tất cả trong thư mục này

Bạn cũng thể thêm dòng này vào cuối để khởi động chương trình sau khi biên dịch xong

start server.jar

Và thành quả là như thế này

clip_image006

Đây là full code bat. Chỉ cần để ở thư mục trên và click là xong:

rmdir build /S /Q

 

mkdir build

 

javac -d build net\cowboy90\server\*.java

 

javac -d build net\cowboy90\Account\*.java

 

javac -d build net\cowboy90\Protocol\*.java

 

cd build

 

echo Manifest-Version: 3.3>Manifests.mf

 

echo Created-By: "hotdream1990">>Manifests.mf

 

echo Specification-Title: "Chat Server">>Manifests.mf

 

echo Main-Class: net.cowboy90.server.Main>> Manifests.mf

 

jar cvfm server.jar Manifests.mf .\net server.properties

 

cd ..

 

copy build\server.jar server.jar

 

rmdir build /S /Q

 

start server.jar

 
Leave a comment

Posted by on December 3, 2010 in Java

 

Tags: ,

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s