Sẽ sử dụng tùy chọn -classpath
với java
, thêm hoặc thay thế nội dung của biến số CLASSPATH
env?Tùy chọn đường dẫn Java-class
Trả lời
Sử dụng biến classpath sẽ ghi đè biến CLASSPATH of Environment nhưng chỉ cho phiên đó. Nếu bạn khởi động lại ứng dụng, bạn cần phải thiết lập lại biến classpath.
Có. Trích dẫn từ trang java(1)
người đàn ông:
-classpath classpath
-cp classpath
Specifies a list of directories, JAR archives, and ZIP archives to search for class files. Class
path entries are separated by colons (:). Specifying -classpath or -cp overrides any setting of the
CLASSPATH environment variable.
If -classpath and -cp are not used and CLASSPATH is not set, the user class path consists of the cur-
rent directory (.).
Biến môi trường là * không * cập nhật ở tất cả, theo điều này. Tôi không thấy câu trả lời là "có". –
@ S.Lott - Từ quan điểm của ai? Từ quan điểm * của chương trình *, giá trị CLASSPATH (nếu nó tồn tại) được thay thế. Từ điểm * của * xem của giá trị CLASSPATH không thay đổi. Tôi nghĩ rằng câu hỏi ban đầu chỉ là một từ ngữ xấu. – Nate
Hoặc một trong các tùy chọn được sử dụng, không phải cả hai.
Chỉ định-classpath hoặc -cp ghi đè bất kỳ cài đặt nào của biến môi trường CLASSPATH.
...
Tùy chọn -classpath được ưa thích vì bạn có thể thiết lập nó riêng cho mỗi ứng dụng mà không ảnh hưởng đến các ứng dụng khác và không có các ứng dụng khác thay đổi giá trị của nó.
...
Thiết lập biến CLASSPATH hoặc sử dụng các tùy chọn dòng lệnh -classpath ghi đè mặc định, vì vậy nếu bạn muốn bao gồm các thư mục hiện tại trong con đường tìm kiếm, bạn phải bao gồm " . " trong cài đặt mới.
Việc sử dụng tùy chọn -cp sẽ không ảnh hưởng đến biến môi trường CLASSPATH.
Bạn có thể thử đoạn mã nhỏ này để kiểm tra này:
public class CPTest {
public static void main (final String[] args) {
String cp = System.getenv("CLASSPATH");
System.out.println(cp);
}
}
%echo $CLASSPATH
/home/test/:.
Sản lượng mà không lựa chọn -cp:
%java CPTest
/home/test/:.
Sản lượng với tùy chọn -cp:
%java -cp /home/xanadu:. CPTest
/home/test/:.
Đầu ra là giống nhau cho cả hai lời gọi (một với -cp và một không có).
Ngoài ra một trong hai con đường được quy định trong CLASSPATH biến môi trường là
sử dụng hoặc các đường dẫn cụ thể với -cp tùy chọn được sử dụng. Nó không phải là một kết hợp của cả hai nó là một trong số họ.
Điều này hiển nhiên từ lời gọi bên dưới. Nếu CWD (hiện tại thư mục làm việc "")
được loại trừ khỏi tùy chọn -cp, launcher JVM (tức là java) không thể tìm thấy tập tin
lớp mặc dù các biến môi trường CLASSPATH chứa CWD ("") trong đó.
%java -cp /home/test CPTest
Exception in thread "main" java.lang.NoClassDefFoundError: CPTest
Câu hỏi hay. Tôi chưa bao giờ nghĩ về nó – marionmaiden
Bạn có muốn biết biến môi trường có bị thay đổi không? Bạn đã chạy một thử nghiệm để thực sự * xem * nếu nó thay đổi? –
Tại sao bạn không tự thử? –