Tôi biết rằng export CLASSPATH=/usr/local/java/tools.jar:$CLASSPATH
sẽ thêm tools.jar vào CLASSPATH, nhưng tôi muốn đặt thư mục thành CLASSPATH
như thế này
export CLASSPATH=/usr/local/java/lib/:$CLASSPATH
nhưng nó không hoạt động.
Tôi biết rằng export CLASSPATH=/usr/local/java/tools.jar:$CLASSPATH
sẽ thêm tools.jar vào CLASSPATH, nhưng tôi muốn đặt thư mục thành CLASSPATH
như thế này
export CLASSPATH=/usr/local/java/lib/:$CLASSPATH
nhưng nó không hoạt động.
Câu trả lời:
Đầu tiên, nói chung, việc đặt var env CLASSPATH
thường gây ra nhiều vấn đề hơn giải quyết - vì không phải tất cả các ứng dụng đều muốn / cần cùng một đường dẫn, và thường bị phá vỡ khi các lọ không mong muốn hoặc thậm chí không cần thiết được đưa vào đường dẫn lớp. Một ứng dụng java chỉ nên bao gồm số lượng lọ tối thiểu mà nó yêu cầu, không hơn, không kém.
Khi bạn có các ứng dụng cụ thể, riêng lẻ yêu cầu đường dẫn lớp được đặt, thì thông thường tùy chọn dòng lệnh sẽ được ưu tiên : java -cp path1:path2:...
. Các biểu tượng trên màn hình có thể thay đổi lệnh của chúng để bao gồm các tùy chọn này hoặc tập lệnh shell có thể được sửa đổi để bao gồm các tùy chọn này.
Điều đó đang được nói (và vì luôn có ngoại lệ cho quy tắc), sau đó tùy thuộc vào phiên bản java (điều này yêu cầu java 6 trở lên), bạn có thể chỉ định rằng toàn bộ thư mục của các tệp được thêm vào đường dẫn lớp bằng cách thêm " *
" ở cuối thư mục; ví dụ như sau:
/dir1/foo.jar:/dir2/dir3:/dir5/dir6/*:etc...
Có nghĩa:
/dir1/foo.jar
- (bình duy nhất) sẽ được thêm vào đường dẫn lớp;/dir2/dir3
- tất cả các lớp un-jar'd trong thư mục này sẽ được thêm vào đường dẫn lớp (phải có cấu trúc gói phù hợp; ví dụ: com.my.Foo.class
phải ở trong /dir2/dir3/com/my/Foo.class
)/dir5/dir6/*
- tất cả các tệp trong thư mục này (tức là /dir5/dir6/*.jar
) sẽ được thêm vào đường dẫn lớp. Lưu ý rằng " *
" này không phải là ký tự đại diện (bạn không thể sử dụng f*.jar
hoặc thậm chí *.jar
); đó là một ký tự đặc biệt chỉ ra "thêm tất cả các lọ"Nói chung, nếu bạn phải thêm toàn bộ thư mục các tệp vào đường dẫn lớp của ứng dụng, ứng dụng không được đóng gói chính xác. Thay vào đó, ứng dụng nên có một bảng kê khai chứa danh sách các lọ mà nó phụ thuộc. Hoặc ít nhất, chỉ nên thêm một bình vào đường dẫn lớp của bạn và bình đó có thể có trong bảng kê khai toàn bộ danh sách các lọ trong một thư mục con.
nếu bạn muốn đặt classpath vĩnh viễn thì 1) tìm xem java được cài đặt ở đâu .. bạn có thể sử dụng "whereis java" openjdk-7/6 nằm trong / usr / lib / jvm / .....
2) chúng ta cần thiết lập CLASSPATH trong / etc / môi trường
sudo gedit /etc/environment
3) thêm các lượt thích sau đây .. (ĐỪNG BỎ L AN BẤT K SP SPACES WHILE TYPING nào) (tùy chỉnh theo phiên bản java và cài đặt của bạn) (đường dẫn này dành cho mở jdk 7)
JAVA_HOME="/usr/lib/jvm/java-7-openjdk-i386/bin"
export JAVA_HOME
CLASSPATH=".:/usr/lib/jvm/java-7-openjdk-i386/lib:/home/laptop/Desktop/a2"
export CLASSPATH
thư mục riêng biệt bằng ":"