- 1 1. Những Điều Bạn Sẽ Học Trong Bài Viết Này (Tóm Tắt Ngắn Gọn)
- 2 2. Bắt Đầu Tại Đây: Danh Sách Lệnh Kiểm Tra Phiên Bản Java (Sao Chép & Dán)
- 2.1 2.1 Kiểm Tra Phiên Bản Java Được Sử Dụng Khi Chạy
- 2.2 2.2 Kiểm Tra Phiên Bản Môi Trường Phát Triển Java (JDK)
- 2.3 2.3 Sự Khác Biệt Giữa java -version và javac -version (Sự Nhầm Lẫn Thông Thường của Người Mới Bắt Đầu)
- 2.4 2.4 Kiểm Tra Bằng Công Cụ JDK (Tùy Chọn)
- 2.5 2.5 Thứ Tự Kiểm Tra Được Đề Xuất (Thân Thiện với Người Mới Bắt Đầu)
- 3 3. Cách Đọc java -version (Ví Dụ Kết Quả và Cách Giải Thích)
- 4 4. Cách Đọc javac -version (Xác Nhận JDK Đã Được Cài Đặt)
- 5 5. Cách Kiểm Tra Phiên Bản Java trên Windows
- 5.1 5.1 Kiểm Tra bằng Command Prompt / PowerShell (Cơ bản)
- 5.2 5.2 Lệnh quan trọng dành riêng cho Windows: where java
- 5.3 5.3 Tại sao một phiên bản Java cũ vẫn được sử dụng ngay cả sau khi đã cài đặt
- 5.4 5.4 Cách kiểm tra JAVA_HOME (Windows)
- 5.5 5.5 Danh sách kiểm tra an toàn cho Windows
- 5.6 5.6 Kiểm tra qua GUI (Màn hình Biến môi trường) có thể đợi
- 6 6. Cách kiểm tra phiên bản Java trên macOS
- 7 7. Cách Kiểm Tra Phiên Bản Java Trên Linux
- 8 8. Tại Sao Phiên Bản Java Hiển Thị Khác Nhau (Nguyên Nhân và Giải Pháp)
- 9 9. Danh sách kiểm tra để vượt ra ngoài việc chỉ “Kiểm tra”
- 10 10. Câu hỏi thường gặp (FAQ)
1. Những Điều Bạn Sẽ Học Trong Bài Viết Này (Tóm Tắt Ngắn Gọn)
Trong trang này, chúng tôi sẽ sắp xếp cách nhanh nhất để đạt được mục tiêu “kiểm tra phiên bản Java từ dòng lệnh.”
Để đưa ra kết luận ngay từ đầu, các lệnh bạn thường dùng là hai lệnh sau:
- Phiên bản Java thực sự đang chạy →
java -version - Phiên bản JDK (trình biên dịch) cho việc phát triển →
javac -version
Tuy nhiên, trong môi trường thực tế, rất thường xuyên bạn sẽ gặp trường hợp “phiên bản bạn mong đợi không phải là phiên bản hiển thị.”
Bài viết này không chỉ liệt kê các lệnh—nó còn giải thích tại sao lại có sự không khớp và cách khắc phục.
1.1 Những Điều Bạn Có Thể Làm Sau Khi Đọc Xong
Khi kết thúc, bạn sẽ có thể thực hiện các việc sau:
- Kiểm tra ngay phiên bản Java của bạn wp:list /wp:list
- Tự tin sử dụng
java -versionvàjavac -versioncho mục đích đúng
- Tự tin sử dụng
- Hiểu cách kiểm tra trên Windows / macOS / Linux wp:list /wp:list
- Xác minh Java đồng thời lưu ý các khác biệt thường gặp theo hệ điều hành
- Xác định Java nào đang được dùng ngay cả khi có nhiều phiên bản được cài đặt wp:list /wp:list
- Khắc phục “Tôi đã cài đặt, nhưng vẫn thấy phiên bản cũ” một cách độc lập
- Hiểu các nguyên nhân và cách khắc phục phổ biến khi phiên bản hiển thị không phải là phiên bản bạn mong đợi wp:list /wp:list
- Nắm bắt các khái niệm cơ bản về PATH, JAVA_HOME và các thiết lập chuyển đổi phiên bản
1.2 Đối Tượng Độc Giả Dự Kiến (Chào Đón Người Mới Bắt Đầu)
- Bạn cần dùng Java và muốn biết Java nào đã được cài trên máy tính của mình trước tiên
- Bạn đã được thông báo “cần Java 17” hoặc “chỉ hỗ trợ Java 8,” và bạn cần kiểm tra phiên bản hiện tại
- Bạn chạy một lệnh và nhận được phiên bản khác với mong đợi, và bạn đang bối rối
javahoạt động nhưngjavackhông, và bạn chưa hiểu rõ sự khác nhau giữa JRE và JDK
1.3 Một Điểm Quan Trọng Cần Biết Ngay Từ Đầu (Rất Quan Trọng)
Hầu hết sự nhầm lẫn khi kiểm tra phiên bản Java đều bắt nguồn từ một điểm:
- “Java được cài trên máy” không đồng nghĩa với “Java thực sự đang chạy.”
Khi có nhiều bản cài Java, Java được chạy là bản nằm ở vị trí có ưu tiên cao nhất trong thời gian thực.
Đó là lý do tại sao kết quả của java -version có thể không phải là “phiên bản mới nhất bạn vừa cài đặt.”
Với sự không khớp này trong tâm trí, bài viết sẽ giải thích, theo thứ tự:
- Những gì cần chạy đầu tiên (đường ngắn nhất)
- Những gì cần kiểm tra tiếp theo để xác định nguyên nhân (các bước điều tra)
- Cách khắc phục (các bước giải quyết)
bước từng bước.
2. Bắt Đầu Tại Đây: Danh Sách Lệnh Kiểm Tra Phiên Bản Java (Sao Chép & Dán)
Bạn không cần nhiều lệnh để kiểm tra phiên bản Java.
Nếu bạn chỉ nhớ phần này, bạn sẽ giải quyết được khoảng 90 % các trường hợp.
2.1 Kiểm Tra Phiên Bản Java Được Sử Dụng Khi Chạy
java -version
Lệnh này hiển thị phiên bản Java thực sự đang chạy trên máy này ngay lúc hiện tại.
Đây là cách cơ bản nhất—và quan trọng nhất—để xác nhận môi trường Java của bạn.
Những Gì Thường Xuất Hiện Trong Đầu Ra (Ví Dụ)
- Số phiên bản Java (ví dụ: 17 / 21 / 1.8, v.v.)
- Định danh triển khai (OpenJDK / Oracle JDK, v.v.)
- Thông tin môi trường chạy như 64‑bit / Server VM
Điểm quan trọng là: lệnh này nhắm tới java có độ ưu tiên cao nhất trên PATH của bạn.
Nó không liên quan tới “nơi bạn đã cài Java,” mà là “Java nào đang được gọi.” Hãy ghi nhớ điều này.
2.2 Kiểm Tra Phiên Bản Môi Trường Phát Triển Java (JDK)
javac -version
Lệnh này hiển thị phiên bản của trình biên dịch Java (javac).
Điều Gì Được Tiết Lộ Bởi Lệnh Này
- JDK có được cài đặt đúng không
- Bạn có thể dùng Java không chỉ để chạy ứng dụng mà còn để phát triển / xây dựng hay không
Nếu lệnh này trả về một trong các thông báo như:
- “command not found”
- “
javacis not recognized as an internal or external command”
thì rất có khả năng JDK chưa được cài hoặc PATH của bạn chưa được thiết lập đúng.
2.3 Sự Khác Biệt Giữa java -version và javac -version (Sự Nhầm Lẫn Thông Thường của Người Mới Bắt Đầu)
| Command | What It Checks | Main Use |
|---|---|---|
java -version | Java at runtime | Running apps / verifying runtime behavior |
javac -version | Compiler (JDK) | Development / builds |
Một sự hiểu lầm phổ biến là:
- Nếu
java -versionhoạt động, bạn có thể phát triển mã Java. Điều này không đúng . - Chỉ chạy →
java - Phát triển (biên dịch) →
javac
Hai lệnh này có vai trò khác nhau, vì vậy việc kiểm tra cả hai là cách tiếp cận tiêu chuẩn.
2.4 Kiểm Tra Bằng Công Cụ JDK (Tùy Chọn)
Tùy thuộc vào môi trường của bạn, bạn cũng có thể kiểm tra phiên bản JDK bằng lệnh sau:
jshell --version
jshelllà một công cụ được bao gồm mặc định trong JDK 9 trở lên- Nếu lệnh này hoạt động, đó là dấu hiệu tốt cho thấy JDK đã được cài đặt
Tuy nhiên, miễn là bạn hiểu java -version và javac -version, thường thì điều đó là đủ.
2.5 Thứ Tự Kiểm Tra Được Đề Xuất (Thân Thiện với Người Mới Bắt Đầu)
Nếu bạn mới bắt đầu, việc kiểm tra theo thứ tự sau sẽ giảm bớt sự nhầm lẫn:
java -version→ Kiểm tra phiên bản Java được sử dụng khi chạyjavac -version→ Xác nhận JDK phát triển có sẵn- Nếu kết quả không như mong đợi, xem phần tiếp theo để kiểm tra theo hệ điều hành
3. Cách Đọc java -version (Ví Dụ Kết Quả và Cách Giải Thích)
Trong phần này, chúng ta sẽ phân tích những gì xuất hiện khi bạn chạy java -version, từng bước một để người mới không bị lạc. Điều này nhằm ngăn ngừa tình huống phổ biến “Tôi không biết mình nên nhìn vào gì.”
3.1 Vai Trò Cơ Bản của java -version
java -version
Lệnh này cho bạn biết phiên bản Java sẽ chạy ngay bây giờ. Nó không hiển thị danh sách các phiên bản Java đã cài đặt — nó hiển thị phiên bản thực sự đang được sử dụng.
Đó là lý do tại sao kết quả này trở thành cơ sở cho các mục như:
- Bạn có đáp ứng phiên bản Java yêu cầu của một ứng dụng hoặc công cụ hay không Môi trường sản xuất/ki thử có đang chạy phiên bản Java mong muốn hay không
- Có phiên bản Java cũ đang được sử dụng một cách không mong muốn hay không
3.2 Ví Dụ Kết Quả Điển Hình (Minh Họa)
Cụm từ chính xác có thể khác nhau tùy môi trường, nhưng bạn thường sẽ thấy một thứ gì đó như sau:
java version "17.0.8"
Java(TM) SE Runtime Environment (build 17.0.8+9)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.8+9, mixed mode)
Trong kết quả này, phần quan trọng nhất là dòng đầu tiên.
3.3 Những Điều Cần Kiểm Tra Đầu Tiên (Đây Là Tất Cả Bạn Cần)
① Version Number
java version "17.0.8"
17→ Dòng Java 171.8.x→ Java 821.x→ Java 21
Ở nhiều nơi làm việc, các bản phát hành LTS (Hỗ Trợ Dài Hạn) như 8 / 11 / 17 / 21 thường được sử dụng. Đầu tiên, xác nhận đó có phải là phiên bản chính mà dự án của bạn yêu cầu hay không.
② Phân Phối Java (Oracle / OpenJDK, v.v.)
Java(TM) SE Runtime Environment
hoặc
OpenJDK Runtime Environment
Trong hầu hết các trường hợp, bạn không cần quá khắt khe về điều này cho việc xác minh cơ bản. Tuy nhiên, một số công ty/dự án có thể yêu cầu rõ ràng “Oracle JDK” hoặc “OpenJDK”, vì vậy nó có thể quan trọng tùy môi trường của bạn.
③ “64-Bit” / “Server VM”
64-Bit Server VM
- Trong hầu hết các môi trường hiện đại, 64-Bit là bình thường
- Trừ khi bạn có lý do đặc biệt, một kiểm tra nhanh ở đây là đủ
3.4 Tại Sao Bạn Nhận Được “Phiên Bản Java Khác Với Mong Đợi”
Đây là điểm gây nhầm lẫn nhất cho người mới.
Một Sự Hiểu Lầm Thông Thường
- “Tôi đã cài đặt Java mới nhất.”
- “Vì vậy
java -versionnên hiển thị phiên bản mới nhất.”
Trên thực tế, điều này không được đảm bảo.
Lý do rất đơn giản:
java -versionchạy java đầu tiên mà nó tìm thấy với độ ưu tiên cao nhất trên PATH
Đó là lý do.
Nói cách khác, nếu:
- Một phiên bản Java cũ hơn vẫn nằm trước trong PATH
- Nhiều cài đặt JDK/JRE được trộn lẫn với nhau
thì một phiên bản Java khác với phiên bản bạn đã cài đặt có thể chạy.
3.5 java -version Kiểm Tra “Kết Quả,” Không Phải “Vị Trí”
Như một cách suy nghĩ quan trọng:
- ❌ Nơi Java được cài đặt
- ⭕ Java nào thực sự đang được thực thi
Đó là mục đích của java -version.
Trước tiên, chỉ cần quyết định liệu kết quả hiển thị có đúng hay không.
Nếu không, hãy sử dụng các phần sau để xác định nguyên nhân và khắc phục — đó là quy trình an toàn nhất.
4. Cách Đọc javac -version (Xác Nhận JDK Đã Được Cài Đặt)
Ở đây chúng tôi sẽ giải thích vai trò của javac -version và cách diễn giải nó.
Hiểu lệnh này nhanh chóng giải quyết một vấn đề phổ biến: “Java chạy, nhưng tôi không thể phát triển/xây dựng.”
4.1 javac là gì? (Dành cho người mới bắt đầu)
javac là viết tắt của Java Compiler (trình biên dịch Java).
java→ chạy một chương trình đã được biên dịchjavac→ biên dịch mã nguồn (.java)
Vì vậy các vai trò là:
- Nếu bạn chỉ muốn chạy Java →
javalà đủ - Nếu bạn muốn phát triển/xây dựng Java → cần
javac
Đó là sự phân chia trách nhiệm cơ bản.
4.2 Những gì bạn học được từ javac -version
javac -version
Lệnh này hiển thị phiên bản của trình biên dịch Java đang được sử dụng.
Kết quả mẫu (Minh hoạ)
javac 17.0.8
Số hiển thị ở đây có thể được hiểu là:
- Phiên bản JDK bản thân nó
- Phiên bản Java cơ sở được dùng để biên dịch trong thực tế
Hiểu như vậy đã đủ cho hầu hết các tình huống thực tế.
4.3 Lưu ý quan trọng khi nó không khớp với java -version
Sự không khớp này thường xảy ra trong công việc thực tế:
java -version→ 17javac -version→ 11
Trong trường hợp đó, bạn có một cấu hình không đồng nhất:
- Thời gian chạy: Java 17
- Phát triển: Java 11
Các vấn đề mà sự không đồng nhất này có thể gây ra
- Bạn không thể sử dụng các tính năng ngôn ngữ mới hơn
- Quá trình xây dựng thành công, nhưng lỗi thời gian chạy xuất hiện
- Hành vi khác nhau giữa môi trường CI và máy cục bộ
Vì vậy, như một chính sách cơ bản, an toàn nhất là đồng bộ cả hai phiên bản.
4.4 Khi javac không được tìm thấy (Lỗi thường gặp)
Bạn có thể thấy các thông báo như sau:
- “
javackhông được nhận dạng là lệnh nội bộ hoặc bên ngoài” - “command not found: javac”
Trong trường hợp này, nguyên nhân thường gần như luôn là một trong hai:
Nguyên nhân 1: JDK chưa được cài đặt
- Chỉ cài đặt JRE (runtime) mà không có công cụ phát triển
Nguyên nhân 2: PATH chưa được thiết lập
- JDK đã được cài đặt, nhưng thư mục
binchưa được thêm vào PATH
Bạn có thể phân biệt rõ ràng giữa hai trường hợp này trong các phần xác nhận theo hệ điều hành.
4.5 javac -version là tín hiệu “Tôi có thể phát triển?”
Nếu bạn là người mới, ghi nhớ như sau sẽ giúp tránh nhầm lẫn:
java -version→ Tôi có thể chạy Java?javac -version→ Tôi có thể phát triển/xây dựng Java?
Nếu cả hai lệnh đều hiển thị phiên bản mong muốn,
môi trường Java của bạn đang ở trạng thái cài đặt tối thiểu cần thiết đã hoàn thành.
5. Cách Kiểm Tra Phiên Bản Java trên Windows
Phần này giải thích cách kiểm tra phiên bản Java trên Windows, bao gồm các điểm thường gây rắc rối trong thực tế.
Vì Windows là hệ điều hành mà nhiều cài đặt Java thường tồn tại đồng thời, thứ tự kiểm tra đặc biệt quan trọng.
5.1 Kiểm Tra bằng Command Prompt / PowerShell (Cơ bản)
Đầu tiên, bắt đầu với phương pháp cơ bản nhất.
- Mở Command Prompt hoặc PowerShell
- Chạy lệnh sau
java -version
Nếu bạn dự định phát triển với Java, cũng hãy kiểm tra:
javac -version
Tại thời điểm này:
- Nếu cả hai phiên bản đều như mong đợi → Không có vấn đề
- Nếu phiên bản không như mong đợi → Xác định nguyên nhân trong các bước tiếp theo
Đó là cách bạn nên đánh giá kết quả.
5.2 Lệnh quan trọng dành riêng cho Windows: where java
Trên Windows, việc xác định java.exe nào thực sự đang được sử dụng là vô cùng quan trọng.
where java
Kết quả mẫu (Minh hoạ)
C:\Program Files\Java\jdk-17\bin\java.exe
C:\Program Files\Common Files\Oracle\Java\javapath\java.exe
Nếu nhiều dòng được hiển thị, dòng ở trên cùng có độ ưu tiên cao nhất và chính là cái mà thực tế được chạy.
5.3 Tại sao một phiên bản Java cũ vẫn được sử dụng ngay cả sau khi đã cài đặt
Các nguyên nhân phổ biến trên Windows bao gồm:
- Một bản cài đặt Java cũ vẫn còn tồn tại
javapathxuất hiện sớm hơn trong PATH- JAVA_HOME và PATH không khớp nhau
Đặc biệt, nếu thư mục sau được đưa vào PATH:
C:\Program Files\Common Files\Oracle\Java\javapath
thường gây ra phiên bản Java không mong muốn bị gọi.

5.4 Cách kiểm tra JAVA_HOME (Windows)
Tiếp theo, kiểm tra JAVA_HOME.
echo %JAVA_HOME%
- Nếu không hiển thị gì → JAVA_HOME chưa được đặt
- Nếu hiển thị một đường dẫn không mong đợi → Có thể đang trỏ tới một phiên bản Java cũ
Ví dụ về một cấu hình đúng
C:\Program Files\Java\jdk-17
Lưu ý rằng nó nên trỏ tới thư mục gốc của JDK, không phải thư mục bin.
5.5 Danh sách kiểm tra an toàn cho Windows
Đối với người mới, việc kiểm tra theo thứ tự này giúp tránh nhầm lẫn:
java -versionjavac -versionwhere javaecho %JAVA_HOME%
Nếu cả bốn kiểm tra đều cho kết quả đúng,
bạn có thể kết luận rằng môi trường Java trên Windows của bạn đã được cấu hình đúng.
5.6 Kiểm tra qua GUI (Màn hình Biến môi trường) có thể đợi
Windows cũng cung cấp một màn hình GUI để xem và chỉnh sửa các biến môi trường, nhưng:
- Java nào đang được sử dụng
- Tại sao lại có sự không khớp
được đánh giá chính xác hơn nhiều bằng kết quả lệnh.
Hãy sử dụng GUI khi bạn cần sửa các thiết lập,
nhưng luôn xác minh bằng các lệnh — đó là cách thực tế.
6. Cách kiểm tra phiên bản Java trên macOS
Phần này giải thích cách kiểm tra phiên bản Java trên macOS.
Khác với Windows, macOS có một cơ chế cấp hệ thống để quản lý JDK, vì vậy việc nắm các lệnh chuyên dụng giúp tránh nhầm lẫn.
6.1 Kiểm tra các lệnh cơ bản trong Terminal
Đầu tiên, bắt đầu với các lệnh cơ bản giống như ở mọi nơi.
- Mở Terminal
- Chạy lệnh sau
java -version
Nếu bạn dự định phát triển với Java, cũng nên kiểm tra:
javac -version
Nếu hai kết quả này như mong đợi,
môi trường Java đang được sử dụng trên macOS là ổn.
6.2 Lưu ý: macOS tự động quản lý JAVA_HOME
Trên macOS, thường không hard-code JAVA_HOME,
mà thay vào đó lấy giá trị một cách động bằng lệnh hệ thống.
Lệnh đại diện là:
/usr/libexec/java_home
Ví dụ đầu ra (Minh họa)
/Library/Java/JavaVirtualMachines/jdk-17.jdk/Contents/Home
Đường dẫn này là thư mục gốc của JDK mặc định hiện tại.
6.3 Liệt kê các JDK đã cài đặt
Nếu có nhiều JDK được cài đặt, lệnh sau rất hữu ích:
/usr/libexec/java_home -V
Chạy lệnh này sẽ hiển thị:
- Các phiên bản JDK đã cài đặt
- Nhà cung cấp (Oracle / dựa trên OpenJDK, v.v.)
- Kiến trúc được hỗ trợ
Trên macOS, đây là cách an toàn nhất để xác nhận các JDK thực sự đã được cài đặt.
6.4 Khi java -version và java_home không khớp
Bạn có thể gặp tình huống như sau:
/usr/libexec/java_home→ Java 17java -version→ Java 11
Trong những trường hợp này, nguyên nhân có thể là:
JAVA_HOMEđược cố định trong các file cấu hình shell (.zshrc/.bashrc)- Một phiên bản Java khác xuất hiện sớm hơn trong PATH
- Java được cài qua Homebrew đang chiếm ưu tiên
Trên macOS, cài đặt cấp người dùng có ưu tiên,
do đó các file cấu hình shell có ảnh hưởng mạnh.
6.5 Danh sách kiểm tra an toàn cho macOS
Trên macOS, việc kiểm tra theo thứ tự này giúp tổ chức tốt:
java -versionjavac -version/usr/libexec/java_home/usr/libexec/java_home -V
Với bốn kiểm tra này, bạn có thể hiểu một cách chính xác:
- Java hiện đang được sử dụng
- Danh sách các phiên bản Java đã cài đặt
- JDK mặc định
mà không gây nhầm lẫn.
6.6 Nghĩ theo khái niệm “Chuyển đổi” trên macOS
Trên macOS, thường có:
- Các dự án khác nhau yêu cầu các phiên bản Java khác nhau
- Bạn chuyển đổi giữa nhiều JDK
Do đó:
- Đừng cho rằng chỉ có một Java
- Luôn xác nhận phiên bản Java đang được sử dụng
Giữ quan điểm này sẽ giúp tránh rắc rối dễ dàng hơn.
7. Cách Kiểm Tra Phiên Bản Java Trên Linux
Phần này giải thích cách kiểm tra phiên bản Java trên môi trường Linux, đặc biệt là cho mục đích máy chủ.
Mặc dù các phương pháp quản lý khác nhau theo bản phân phối, các khái niệm cốt lõi vẫn giống nhau.
7.1 Bắt Đầu Với Các Lệnh Cơ Bản
Trên Linux cũng vậy, bắt đầu với các lệnh thông thường:
java -version
Nếu cần phát triển hoặc biên dịch, cũng hãy kiểm tra:
javac -version
Với hai lệnh này, bạn có thể xác định liệu:
- Java được sử dụng khi chạy
- JDK được sử dụng để biên dịch
có khớp với mong đợi của bạn.
7.2 Sử Dụng which java Để Tìm Binary Thực Tế
Trên Linux, quan trọng là biết tệp thực thi nào thực sự đang được gọi.
which java
Ví Dụ Kết Quả
/usr/bin/java
Đường dẫn này là binary Java thực tế được java -version sử dụng.
Nếu bạn cần chi tiết hơn, chạy:
ls -l $(which java)
Điều này cho phép bạn truy vết liên kết tượng trưng tới mục tiêu thực của nó.
7.3 Quản Lý Nhiều Phiên Bản Java Trên Debian / Ubuntu (update-alternatives)
Trên máy chủ, rất phổ biến có nhiều phiên bản Java được cài đặt.
Trên các hệ thống dựa trên Debian/Ubuntu, chúng thường được quản lý bằng update-alternatives.
Liệt Kê Các Lựa Chọn Java
update-alternatives --list java
Kiểm Tra Lựa Chọn Hiện Tại
update-alternatives --display java
Đường dẫn hiển thị ở đây là Java được chọn ở mức hệ thống.
7.4 Khi java -version và alternatives Không Trùng Khớp
Thỉnh thoảng, bạn có thể thấy sự không khớp như sau:
update-alternatives→ Java 17java -version→ Java 11
Các nguyên nhân có thể bao gồm:
- Một Java khác xuất hiện trong PATH của người dùng
- Một Java được cài đặt thủ công tồn tại trong
/usr/local/bin, v.v. - PATH khác nhau giữa việc thực thi bình thường và
sudo
Trên Linux, cả hai:
- Cài đặt ở mức hệ thống
- Môi trường ở mức người dùng
có thể ảnh hưởng đến Java nào sẽ chạy.
7.5 Danh Sách Kiểm Tra An Toàn Cho Linux
Trên Linux, kiểm tra theo thứ tự này giúp mọi thứ rõ ràng:
java -versionjavac -versionwhich javaupdate-alternatives --display java(nếu áp dụng)
Điều này cung cấp cho bạn một bức tranh toàn diện về:
- Java hiện đang chạy
- Tệp thực thi thực tế
- Cấu hình hệ thống
trong một cái nhìn.
8. Tại Sao Phiên Bản Java Hiển Thị Khác Nhau (Nguyên Nhân và Giải Pháp)
Hầu hết các vấn đề về phiên bản Java không phải do các lệnh mà do cấu hình môi trường.
Ở đây chúng tôi tóm tắt các nguyên nhân áp dụng cho mọi hệ điều hành.
8.1 Nguyên Nhân 1: Độ Ưu Tiên PATH Không Như Mong Đợi
Đây là nguyên nhân phổ biến nhất.
- Thư mục
bincủa Java cũ xuất hiện sớm hơn trong PATH - Bạn đã cài đặt Java mới nhưng chưa cập nhật PATH
Cách Khắc Phục
- Xác định Java thực sự đang chạy
- Xóa các mục PATH không cần thiết hoặc sửa thứ tự của chúng
Chỉ “thêm” một đường dẫn mới thường không đủ.
8.2 Nguyên Nhân 2: JAVA_HOME Không Khớp Với Java Đang Chạy
- JAVA_HOME → Java 11
- Java đang chạy → Java 17
Tình huống này cũng rất phổ biến.
Cách Khắc Phục
- Đặt JAVA_HOME tới thư mục gốc của JDK
- Đảm bảo PATH sử dụng
$JAVA_HOME/bin
Hãy nghĩ về JAVA_HOME như một “tham chiếu”, còn PATH là “độ ưu tiên thực thi”.
8.3 Nguyên Nhân 3: java và javac Sử Dụng Các Phiên Bản Khác Nhau
Đây là trường hợp điển hình của sự pha trộn giữa các phiên bản JRE và JDK.
- Thời gian chạy ổn định
- Phát triển hoặc biên dịch gặp lỗi
Cách Khắc Phục
- Chọn một JDK làm tiêu chuẩn
- Đồng bộ
javavàjavacdưới cùng một JDK
8.4 Nguyên Nhân 4: IDE Hoặc Công Cụ Xây Dựng Sử Dụng JDK Khác
- Mọi thứ trông ổn trong terminal
- Lỗi xuất hiện trong IDE hoặc CI
Trong các trường hợp này, nguyên nhân thường là cài đặt JDK riêng cho IDE.
Cách Khắc Phục
- Kiểm tra rõ ràng JDK được sử dụng trong cài đặt IDE
- Đừng chỉ dựa vào “tự động phát hiện”
9. Danh sách kiểm tra để vượt ra ngoài việc chỉ “Kiểm tra”
Cuối cùng, hãy sắp xếp những gì bạn nên làm sau khi kiểm tra phiên bản Java.
9.1 Nếu mục tiêu của bạn chỉ là chạy Java
java -versioncó đáp ứng yêu cầu không?- Ứng dụng có khởi động đúng không?
9.2 Nếu mục tiêu của bạn là phát triển hoặc xây dựng
javac -versioncó đáp ứng yêu cầu không?javavàjavaccó hiển thị cùng một phiên bản không?- JAVA_HOME và PATH có đồng nhất không?
9.3 Nếu bạn sử dụng nhiều phiên bản Java
- Luôn xác nhận Java nào đang được sử dụng hiện tại
- Hiểu cách quản lý theo hệ điều hành (macOS / Linux)
10. Câu hỏi thường gặp (FAQ)
10.1 Sự khác biệt giữa java -version và javac -version là gì?
java -version kiểm tra phiên bản môi trường chạy Java,
trong khi javac -version kiểm tra phiên bản trình biên dịch phát triển (JDK).
Vì chúng phục vụ các mục đích khác nhau, việc kiểm tra cả hai là thực hành tiêu chuẩn.
10.2 Tại sao javac không được tìm thấy?
- JDK chưa được cài đặt
- PATH chưa được thiết lập đúng
Trong hầu hết các trường hợp, đó là một trong hai lý do này.
10.3 Tôi đã cài đặt Java, nhưng vẫn hiển thị phiên bản cũ
Điều này thường có nghĩa là một phiên bản Java khác có ưu tiên cao hơn trong PATH.
Kiểm tra tệp nhị phân thực tế bằng where java (Windows) hoặc which java (macOS/Linux).
10.4 Tôi có thể sử dụng nhiều phiên bản Java một cách an toàn không?
Có, bạn có thể.
Tuy nhiên, điều quan trọng là luôn biết Java nào đang được sử dụng hiện tại.
10.5 Tôi nên sử dụng phiên bản Java nào?
Nếu không có yêu cầu đặc biệt, việc chọn một bản phát hành LTS (Long-Term Support) là lựa chọn an toàn nhất.
Nếu dự án của bạn chỉ định một phiên bản, luôn ưu tiên yêu cầu đó.

