Giống như đã nói, -cp chỉ để thông báo cho jvm trong dòng lệnh lớp nào sẽ sử dụng cho luồng chính và nơi nó có thể tìm thấy các thư viện (định nghĩa classpath). Trong -jar nó mong đợi lớp-đường dẫn và lớp chính được xác định trong tệp kê khai tệp jar. Vì vậy, khác là để xác định mọi thứ trong dòng lệnh trong khi tìm kiếm khác bên trong tệp kê khai jar. Không có sự khác biệt về hiệu suất. Bạn không thể sử dụng chúng cùng lúc, -jar sẽ ghi đè -cp.
Mặc dù ngay cả khi bạn sử dụng -cp, nó vẫn sẽ kiểm tra tệp kê khai. Vì vậy, bạn có thể xác định một số đường dẫn lớp trong tệp kê khai và một số đường dẫn trong dòng lệnh. Điều này đặc biệt hữu ích khi bạn phụ thuộc vào một số jar của bên thứ ba, mà bạn có thể không cung cấp cho bản dựng của mình hoặc không muốn cung cấp (mong đợi nó đã được tìm thấy trong hệ thống nơi nó được cài đặt chẳng hạn). Vì vậy, bạn có thể sử dụng nó để cung cấp các lọ bên ngoài. Vị trí của nó có thể khác nhau giữa các hệ thống hoặc thậm chí nó có thể có một phiên bản khác trên hệ thống khác nhau (nhưng có cùng giao diện). Bằng cách này, bạn có thể tạo ứng dụng với phiên bản khác và thêm sự phụ thuộc thực tế của bên thứ 3 vào đường dẫn lớp trên dòng lệnh khi chạy ứng dụng trên các hệ thống khác nhau.