2010-11-19 38 views
7

Tôi có một thư mục trên màn hình của tôi tựa "Stuff" và trong thư mục mà tôi có như sau:Execute Java từ dòng lệnh

  • Hello.java
  • mail.jar

Và Nhập khẩu Hello.java từ mail.jar, vì vậy tôi cần phải nói cho Hello.java tìm kiếm mail.jar.

Từ dòng lệnh của Windows và từ dòng lệnh unix, làm cách nào tôi có thể biên dịch và chạy lệnh này?

Trả lời

14

Compile:

javac -cp .;mail.jar Hello.java 

nơi ; là dành cho Windows; sử dụng : cho * nix.

và chạy:

java -cp .;mail.jar Hello 

nơi một lần nữa, sử dụng ; cho Windows và : cho * nix.

-cp kể cả javacjavaclasspath để sử dụng, và như tập tin của bạn nằm trong thư mục địa phương nơi bạn đang thực hiện lệnh, bạn có thể sử dụng . cho phần Xin chào và tên của jar cho đường dẫn bên trong bình. Wikipedia có một số decent article on classpaths.

Hãy nhớ bạn, nếu bạn định làm điều này một cách thường xuyên, bạn có thể muốn đặt biến môi trường CLASSPATH thay vì liên tục sử dụng cờ -cp. Cả hai số javajavac đều sử dụng biến số CLASSPATH.

Đối với máy phát triển của riêng tôi, tôi thực sự bao gồm . trong biến số CLASSPATH của tôi, để thuận tiện. Nó không phải cái gì tôi sẽ làm trên một hộp sản xuất hoặc xây dựng/thử nghiệm, nhưng nó rất tiện dụng cho các mục đích phát triển. Bạn cũng muốn có những chiếc bình thường trong đó.

+0

Điều này sẽ không làm cho Java nhận tệp JAR. – Jesper

+0

@ Jesper: Cảm ơn, tôi nghĩ rằng tôi đã sửa chữa điều đó khi bạn nhận xét. :-) Tôi muốn quên lọ. –

-1

Thực hiện theo hướng dẫn này và bạn sẽ có thể để làm điều đó trong thời gian không:

Java Compilation

Bạn cũng không nên có bất kỳ vấn đề với classpath vì lớp học của bạn đang ở trong cùng một thư mục

+0

-1 Không phải là câu trả lời thực sự. –

2

Giả sử Hello.java không chứa khai báo gói, trên Windows:

javac -cp mail.jar Hello.java 
java -cp mail.jar;. Hello 

Sự khác biệt duy nhất trên nền tảng Unix là tha t bạn tách các phần tử của đường dẫn lớp bằng dấu chấm phẩy thay vì dấu chấm phẩy:

java -cp mail.jar:. Hello