Bagaimana cara menambahkan direktori ke classpath di aplikasi yang menjalankan profil di IntelliJ IDEA?


206

Saya mencoba menambahkan direktori ke classpath dari aplikasi yang dijalankan profil

Jika saya menimpa dengan menggunakan -cp x: target / kelas di pengaturan VM, saya mendapatkan kesalahan berikut:

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

Adakah ide tentang cara menambahkan direktori ke classpath untuk proyek saya?


1
Tidak jelas bagi saya, di mana Anda mencoba menambahkan itu. Dari baris perintah IJ? Atau di properti proyek?
Heiko Rupp

Jawaban:


270

Di Intellij 13, tampilannya sedikit berbeda lagi. Berikut adalah petunjuk untuk Intellij 13:

  1. klik pada tampilan Project atau sembunyikan dengan mengklik tombol "1: Project" di perbatasan kiri jendela atau dengan menekan Alt + 1
  2. temukan proyek atau sub-modul Anda dan klik untuk menyorotnya, lalu tekan F4, atau klik kanan dan pilih "Buka Pengaturan Modul" (pada IntelliJ 14 menjadi F12)
  3. klik pada tab dependensi
  4. Klik tombol "+" di sebelah kanan dan pilih "Jars or directories ..."
  5. Temukan jalur Anda dan klik OK
  6. Dalam dialog dengan "Pilih Kategori File yang Dipilih", pilih Classes(bahkan jika itu adalah properti), tekan OK dan OK lagi
  7. Anda sekarang dapat menjalankan aplikasi Anda dan itu akan memiliki jalur yang dipilih di jalur kelas

2
Jadi bagaimana Anda membuat menjalankan konfigurasi dengan dua direktori berbeda yang harus secara eksklusif hadir dalam satu tetapi tidak yang lain. Dalam gerhana Anda dapat menambah / menghapus apa pun ke konfigurasi peluncuran. Apakah IntelliJ tidak mendukung ini?
Καrτhικ

9
Cukup jelas bahwa Anda dapat mengubah classpath dari menjalankan konfigurasi yang mengubah module classpath. Tetapi pertanyaan yang tepat adalah "bagaimana cara menambahkan direktori ke classpath dalam aplikasi yang dijalankan profil ". Jadi yang asli diberikan oleh uaaquarius
Pavel Vyazankin

Terima kasih ! Ini memecahkan masalah saya setelah lama mencari-cari!
JonasCz

1
Langkah 6 tidak muncul untuk saya. Saya menggunakan intellij 14. Saya memiliki folder bernama lib di mana .jar saya berada. memilih folder atau toples hanya akan mem-parsing path ke intellij. masih tidak bekerja
Takeru

@Takeru Apakah Anda tahu ini?
rosshamish

91

Tampaknya IntelliJ 11 telah mengubah metode ini, dan jawaban yang dicentang tidak lagi berfungsi untuk saya. Jika ada orang lain yang datang ke sini melalui mesin pencari, inilah cara saya menyelesaikannya di IntelliJ 11:

  1. Buka Struktur Proyek, klik Modul, dan klik Modul Anda
  2. Pilih tab "Dependency"
  3. Klik tombol "+" di sebelah kanan dan pilih "Guci atau direktori ..."
  4. Tambahkan direktori yang Anda inginkan (perhatikan bahwa Anda dapat memilih banyak) dan klik OK
  5. Dalam dialog yang muncul, pilih "kelas" dan BUKAN "direktori jar"
  6. Pastikan Anda menggunakan Modul itu dalam target lari Anda

Perhatikan bahwa langkah 5 tampaknya menjadi perbedaan utama. Jika Anda memilih "direktori jar" itu akan terlihat persis sama di IDE tetapi tidak akan menyertakan path saat runtime. Tampaknya tidak ada cara untuk menentukan apakah Anda sebelumnya telah memilih "kelas" atau "direktori jar" setelah fakta.


4
Terima kasih banyak telah memposting ini. Anda baru saja menyelamatkan saya sekitar satu jam.
John Jiang

Saya memiliki masalah yang sama seperti sebelumnya dengan IJ11 dan senang menemukan jawaban yang menunggu saya saat ini.
sal

Sempurna. Proses yang sama untuk IJ12. Berlari melintasi tulisan ini ketika mencoba menyelesaikan 'java.lang.ClassNotFoundException: com / microsoft / jdbc / sqlserver / SQLServerDriver' Ini menyelesaikan masalah koneksi. Terima kasih
jkmurphy1

6
Saya tidak mendapatkan langkah 5 :( Dialog tidak muncul.
Charles Wood

1
@CharlesWood: Ketika saya ingin memilih dua folder dengan salah satunya berisi sub-folder. Saya harus memperluas sub-folder yang berisi melalui simbol panah kecil di sebelah nama folder agar dialog muncul. Jika tidak, dialog akan dilewati.
Timo Reimann

35

Anda dapat mencoba opsi -Xbootclasspath / a: path dari peluncur aplikasi java. Menurut deskripsi, ini menentukan "jalur directires yang dipisahkan oleh usus besar, arsip JAR, dan arsip ZIP untuk ditambahkan ke jalur kelas bootstrap default."


2
Beberapa dokumentasi tentang bagaimana -Xbootclasspath kerjanya: docs.oracle.com/cd/E15289_01/doc.40/e15062/optionx.htm#i1018570
Lambart

3
Ini adalah jawaban yang bagus karena tidak mengharuskan Anda mengubah konfigurasi proyek Anda. Sebenarnya saya pikir itu menjawab pertanyaan terbaik.
Chewy

1
Sayangnya ini tidak bekerja untuk saya, karena ini menghasilkan semua kelas yang diambil dari classpath yang akan dimuat oleh bootstrap class loader, yang memecah kode yang mengasumsikan bahwa Xyz.class.getClassLoader () bukan nol.
Njol

@uaaquarius, Mengapa tidak ada cara untuk mengedit string baris perintah secara langsung? Ini membuat frustrasi.
Pacerier

@uaaquarius, Mengapa jika saya menambahkan mysql-connector-java-5.1.45/mysql-connector-java-5.1.45-bin.jardependensi menggunakan metode lain di stackoverflow.com/a/16742141/632951 berfungsi, tetapi melakukan menggunakannya -Xbootclasspath/atidak?
Pacerier

19

Saya menggunakan Idea 8. di tab dependancies modul Anda (dalam dialog struktur proyek). Tambahkan "Perpustakaan Modul". Di sana Anda dapat memilih Direktori Jar untuk ditambahkan. Kemudian pastikan run profile menggunakan Classpath dan JDK dari modul yang benar ketika dijalankan (ini ada di dialog run config.



2

Misalkan Anda hanya perlu x: target / kelas di classpath Anda. Maka Anda cukup menambahkan folder ini ke classpath Anda dan% IDEA% \ lib \ idea_rt.jar. Sekarang akan berhasil. Itu dia.


4
Pertanyaannya adalah bagaimana Anda menambahkan folder ini ke classpath Anda di IDEA?
Pacerier

0

Anda tidak perlu menentukan folder kelas. Intellij harus dapat memuatnya. Anda akan mendapatkan kesalahan ini jika "output Project Compiler" kosong.

Pastikan nilai di bawah ini ditetapkan: Pengaturan Proyek -> Proyek -> keluaran Kompilator Proyek ke folder projectDir / out Anda

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.