Làm cách nào để thêm thư mục vào classpath trong hồ sơ chạy ứng dụng trong IntelliJ IDEA?


206

Tôi đang cố gắng thêm một thư mục vào đường dẫn lớp của hồ sơ chạy ứng dụng

Nếu tôi ghi đè bằng cách sử dụng -cp x: target / class trong cài đặt VM, tôi sẽ gặp lỗi sau:

java.lang.NoClassDefFoundError: com/intellij/rt/execution/application/AppMain

Bất kỳ ý tưởng về cách thêm một thư mục vào classpath cho dự án của tôi?


1
Nó không rõ ràng với tôi, nơi bạn đang cố gắng để thêm điều đó. Từ dòng lệnh IJ? Hoặc trong tài sản dự án?
Heiko Rupp

Câu trả lời:


270

Trong Intellij 13, nó trông hơi khác một lần nữa. Dưới đây là hướng dẫn cho Intellij 13:

  1. nhấp vào khung nhìn Project hoặc bỏ ẩn nó bằng cách nhấp vào nút "1: Project" ở viền trái của cửa sổ hoặc nhấn Alt + 1
  2. tìm dự án hoặc mô-đun phụ của bạn và nhấp vào nó để tô sáng nó, sau đó nhấn F4 hoặc nhấp chuột phải và chọn "Mở cài đặt mô-đun" (trên IntelliJ 14, nó trở thành F12)
  3. nhấp vào tab phụ thuộc
  4. Nhấp vào nút "+" ở bên phải và chọn "Lọ hoặc thư mục ..."
  5. Tìm đường dẫn của bạn và nhấp vào OK
  6. Trong hộp thoại có "Chọn danh mục tệp đã chọn", chọn Classes(ngay cả khi thuộc tính của nó), nhấn OK và OK lần nữa
  7. Bây giờ bạn có thể chạy ứng dụng của mình và nó sẽ có đường dẫn được chọn trong đường dẫn lớp

2
Vì vậy, làm thế nào bạn sẽ tạo để chạy cấu hình với hai thư mục khác nhau phải có mặt riêng trong một nhưng không phải là thư mục khác. Trong nhật thực, bạn có thể thêm / xóa bất cứ thứ gì vào cấu hình khởi chạy. IntelliJ không hỗ trợ điều này?
Καrτhικ

9
Rõ ràng là bạn có thể thay đổi đường dẫn lớp chạy cấu hình thay đổi đường dẫn mô-đun . Nhưng câu hỏi chính xác là "làm thế nào để thêm thư mục vào classpath trong hồ sơ chạy ứng dụng ". Vì vậy, thực tế đã được đưa ra bởi uaaquarius
Pavel Vyazankin

Cảm ơn bạn ! Điều này giải quyết vấn đề của tôi sau nhiều năm tìm kiếm xung quanh!
JonasCz - Phục hồi Monica

1
Bước 6 không đến với tôi. Tôi đang ở trên intellij 14. Tôi có một thư mục gọi là lib nơi .jar của tôi được đặt. chọn thư mục hoặc jar sẽ chỉ phân tích đường dẫn vào intellij. vẫn không hoạt động
Takeru

@Takeru Bạn đã tìm ra điều này?
rosshamish

91

Có vẻ như IntelliJ 11 đã thay đổi phương thức và câu trả lời được kiểm tra không còn hiệu quả với tôi nữa. Trong trường hợp bất kỳ ai khác đến đây thông qua một công cụ tìm kiếm, đây là cách tôi giải quyết nó trong IntelliJ 11:

  1. Chuyển đến Cấu trúc dự án, nhấp vào Mô-đun và nhấp vào Mô-đun của bạn
  2. Chọn tab "Phụ thuộc"
  3. Nhấp vào nút "+" ở phía bên phải và chọn "Lọ hoặc thư mục ..."
  4. Thêm thư mục bạn muốn (lưu ý bạn có thể chọn nhiều) và bấm OK
  5. Trong hộp thoại xuất hiện, chọn "lớp" và KHÔNG "thư mục jar"
  6. Đảm bảo bạn đang sử dụng Mô-đun đó trong mục tiêu chạy của mình

Lưu ý rằng bước 5 dường như là sự khác biệt chính. Nếu bạn chọn "thư mục jar", nó sẽ trông giống hệt trong IDE nhưng sẽ không bao gồm đường dẫn khi chạy. Dường như không có cách nào để xác định xem trước đó bạn đã chọn "lớp" hay "thư mục jar" hay chưa.


4
Cảm ơn bạn rất nhiều vì đã gửi bài này. Bạn chỉ tiết kiệm cho tôi một giờ hoặc lâu hơn.
John Jiang

Tôi có cùng một vấn đề như trước đây với IJ11 và rất vui khi tìm thấy câu trả lời đang chờ tôi lần này.
sal

Hoàn hảo. Quá trình tương tự cho IJ12. Chạy qua bài đăng này khi cố gắng giải quyết 'java.lang.ClassNotFoundException: com / microsoft / jdbc / sqlserver / SQLServerDriver' Điều này đã giải quyết vấn đề kết nối. Cảm ơn
jkmurphy1

6
Tôi không nhận được bước 5 :( Hộp thoại không xuất hiện.
Charles Wood

1
@CharlesWood: Khi tôi muốn chọn hai thư mục với một trong số chúng chứa các thư mục phụ. Tôi đã phải mở rộng thư mục chứa các thư mục con thông qua biểu tượng mũi tên nhỏ bên cạnh tên thư mục để hộp thoại hiển thị. Nếu không, hộp thoại sẽ bị bỏ qua.
Timo Reimann

35

Bạn có thể thử tùy chọn -Xboot classpath / a: path của trình khởi chạy ứng dụng java. Theo mô tả, nó chỉ định "một đường dẫn được phân tách bằng dấu hai chấm, lưu trữ JAR và lưu trữ ZIP để nối vào đường dẫn lớp bootstrap mặc định."


2
Một số tài liệu về cách thức hoạt động của -Xboot classpath
Lambart

3
Đây là một câu trả lời tốt vì nó không yêu cầu bạn thay đổi cấu hình dự án của bạn. Trong thực tế tôi nghĩ rằng nó trả lời câu hỏi tốt nhất.
Chewy

1
Thật không may, điều này không phù hợp với tôi, vì điều này dẫn đến tất cả các lớp được tải từ đường dẫn lớp đó sẽ được tải bởi trình nạp lớp bootstrap, phá vỡ mã giả định rằng Xyz. Class.getClassLoader () không phải là null.
Njol

@uaaquarius, Tại sao không có cách nào để chỉnh sửa trực tiếp chuỗi dòng lệnh? Điều này thật khó chịu.
Pacerier

@uaaquarius, Tại sao nếu tôi thêm mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jarphụ thuộc bằng cách sử dụng phương thức khác tại stackoverflow.com/a/16742141/632951 thì nó hoạt động, nhưng sử dụng -Xbootclasspath/athì không?
Pacerier

19

Tôi đang sử dụng Idea 8. trong tab phụ thuộc mô-đun của bạn (trong hộp thoại cấu trúc dự án). Thêm một "Thư viện mô-đun". Ở đó bạn có thể chọn một Thư mục Jar để thêm. Sau đó, đảm bảo cấu hình chạy đang sử dụng Classpath và JDK của mô-đun chính xác khi nó chạy (đây là trong hộp thoại cấu hình chạy.



2

Giả sử bạn chỉ cần x: target / class trong classpath của bạn. Sau đó, bạn chỉ cần thêm thư mục này vào classpath của mình và% IDEA% \ lib \ idea_rt.jar. Bây giờ nó sẽ làm việc. Đó là nó.


4
Câu hỏi là làm thế nào để bạn thêm thư mục này vào đường dẫn lớp của bạn trong IDEA?
Pacerier

0

Bạn không cần chỉ định thư mục lớp. Intellij sẽ có thể tải nó. Bạn sẽ gặp lỗi này nếu "đầu ra Trình biên dịch dự án" trống.

Chỉ cần đảm bảo rằng giá trị bên dưới được đặt: Cài đặt dự án -> Dự án -> Đầu ra Trình biên dịch dự án vào thư mục ProjectDir / out của bạn

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.