2012-05-11 60 views
20

Tôi đã viết một chương trình gói đơn giản:Làm cách nào để biên dịch các gói trong java?


//A simple package 

     package MyPack 


     class Balance 
     { 
     String name; 
     double bal; 

     Balance(String n, double b) 
     { 
      name=n; 
        bal=b; 
      } 

     void show() 
      { 
      if(bal<0) 
      System.out.println("-->"); 
      System.out.println(name+ ": $:" +bal); 
     } 
     } 

     class AccountBalance 
     { 
      public static void main(String args[]) 
      { 
         Balance current[]=new Balance[3]; 
        current[0]=new Balance("A.K.Juwatkar",123.123); 
        current[1]=new Balance("A.P.Dhoke",345.67); 
        current[2]=new Balance("Anil Sarang",100.98); 

        for(int i=0;i<3;i++) 
       current[i].show(); 
       } 
     } 

Tôi đang sử dụng Ubuntu 10.04 & Khi tôi biên dịch nó bằng cách sử

java MyPack.AccountBalance 

tôi nhận được thông báo sau:

Exception in thread "main" java.lang.NoClassDefFoundError: MyPack/AccountBalance 
Caused by: java.lang.ClassNotFoundException: MyPack.AccountBalance 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:321) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:266) 
Could not find the main class: MyPack.AccountBalance. Program will exit. 

Có gì sai? Hãy giúp tôi ra. Tôi đã cài đặt openjdk, tôi có cần cài đặt gì khác không ?? Tôi đang sử dụng Ubuntu 10.04, xin vui lòng giúp tôi ra

+0

Bạn đã nhập mypack.Balance trong số dư tài khoản chưa? –

+0

http://shivasoft.in/blog/java/compile-and-run-java-program-in-package-from-command-line/ – Maddy

+0

http://www.ntu.edu.sg/home/ehchua/ lập trình/java/J9c_PackageClasspath.html –

Trả lời

35

tốt nhất là để biên dịch và chạy các lớp học từ bên ngoài gói:

Trước tiên, bạn biên dịch với javac:

$javac MyPack/AccountBalance.java 

này sẽ tạo ra một file mới trong thư mục MyPack gọi AccountBalance.class

thì bạn có thể chạy:

$java MyPack.AccountBalance 

Bằng cách này: không được khuyến khích có tên gói bắt đầu bằng vốn.

+0

Cảm ơn rất nhiều nó đã làm việc .... cảm ơn rất nhiều – user1388626

5

Cố gắng tạo ra các thư mục có tên MyPack và di chuyển .class các file trong nó hay sử dụng sau dòng lệnh để biên dịch mã java và nó di chuyển các tập tin .class vào MyPack thư mục.

javac YourFileName.java -d . 

và chạy sử dụng,

java MyPack.AccountBalance 

Có một cái nhìn tại javac cụ

Từ công cụ doc: Theo mặc định, trình biên dịch đặt từng file class trong cùng thư mục với tệp nguồn của nó. Bạn có thể chỉ định thư mục đích riêng biệt với -d (xem Tùy chọn, bên dưới).

package hướng dẫn.

+0

tôi biên soạn bởi javac AccountBalance.java đã không có lỗi có Nhưng khi tôi đã cố gắng chạy sử dụng java MyPack.AccountBalance tôi đã nhận msg sau: – user1388626

+0

@ user1388626 Bạn cần phải tạo MyPack thư mục và di chuyển Balance.class và AccountBalance.class trong đó. Hoặc sử dụng công tắc -d để công cụ javac tạo thư mục gói. – adatapost

+0

Tôi đã đặt tệp AccountBalance.java trong thư mục MyPack – user1388626

11

Khi bạn đang cố gắng biên dịch lớp java, hãy sử dụng tùy chọn '-d' (đích) để chỉ định vị trí tệp .class.

javac -d "classes" AccountBalance.java 

và khi bạn chạy chương trình của bạn, hãy chắc chắn rằng cùng một thư mục được bao gồm trong đường dẫn lớp học của bạn:

java -classpath "classes" MyPack.AccountBalance 
2

Nếu bạn thường xuyên biên soạn và chạy qua javacjava lệnh sau đó sử dụng

javac MyJavaClass.java && java MyJavaClass 

Thao tác này sẽ biên dịch lớp rồi chạy lớp bạn vừa biên soạn.

Lưu ý: Thay thế && bằng ; nếu sử dụng Windows PowerShell.

+0

với lệnh 'java' bạn không cần chỉ định phần mở rộng' .class', nhưng chỉ có tên lớp đầy đủ của lớp chứa phương thức 'main' – user2340612

+1

@ user2340612 Ok, cảm ơn, đã sửa. –

+0

Windows cũng sử dụng cú pháp này. – Nahiyan

Các vấn đề liên quan