Để chạy tệp lớp Java từ dòng lệnh, cú pháp là:
java -classpath /path/to/jars <packageName>.<MainClassName>
nơi packageName (thường bắt đầu bằng com
hoặc org
) là tên thư mục nơi tệp lớp của bạn hiện diện.
Ví dụ: nếu tên lớp chính của bạn là Ứng dụng và tên gói Java của ứng dụng của bạn là com.foo.app
, thì tệp lớp của bạn cần phải nằm trong com/foo/app
thư mục (thư mục riêng biệt cho mỗi dấu chấm), vì vậy bạn chạy ứng dụng của mình dưới dạng:
$ java com.foo.app.App
Lưu ý: $
đang chỉ ra dấu nhắc trình bao, hãy bỏ qua nó khi nhập
Nếu lớp học của bạn không có bất kỳ package
tên xác định, chỉ đơn giản là chạy như: java App
.
Nếu bạn có bất kỳ phụ thuộc jar nào khác, hãy đảm bảo rằng bạn đã chỉ định tham số classpath của mình bằng -cp
/ -classpath
hoặc sử dụng CLASSPATH
biến trỏ đến thư mục có các tệp jar / war / ear / zip / class của bạn . Vì vậy, trên Linux, bạn có thể đặt tiền tố lệnh bằng:, CLASSPATH=/path/to/jars
trên Windows, bạn cần thêm thư mục vào biến hệ thống. Nếu không được đặt, đường dẫn lớp người dùng bao gồm thư mục hiện tại ( .
).
Ví dụ thực tế
Vì chúng tôi đã tạo dự án mẫu bằng Maven như:
$ mvn archetype:generate -DgroupId=com.foo.app -DartifactId=my-app -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
và chúng tôi đã biên dịch dự án của mình bằng dir mvn compile
của chúng tôi my-app/
, nó sẽ tạo ra tệp lớp của chúng tôi có trong target/classes/com/foo/app/App.class
.
Để chạy nó, chúng ta có thể chỉ định đường dẫn lớp thông qua -cp
hoặc truy cập trực tiếp vào nó, hãy xem các ví dụ bên dưới:
$ find . -name "*.class"
./target/classes/com/foo/app/App.class
$ CLASSPATH=target/classes/ java com.foo.app.App
Hello World!
$ java -cp target/classes com.foo.app.App
Hello World!
$ java -classpath .:/path/to/other-jars:target/classes com.foo.app.App
Hello World!
$ cd target/classes && java com.foo.app.App
Hello World!
Để kiểm tra lại lớp và tên gói của bạn, bạn có thể sử dụng công cụ tháo gỡ tệp lớp Java, ví dụ:
$ javap target/classes/com/foo/app/App.class
Compiled from "App.java"
public class com.foo.app.App {
public com.foo.app.App();
public static void main(java.lang.String[]);
}
Lưu ý: javap
sẽ không hoạt động nếu tệp đã biên dịch đã bị xáo trộn.