Paket Maven berfungsi tetapi build Intellij gagal


91

Saya memiliki proyek JDK 1.7 dengan ketergantungan maven ke jar lokal di repo maven saya.

Saya tidak dapat membangun proyek menggunakan Intellij, dengan kesalahan bahwa simbol tidak dapat ditemukan (simbolnya adalah kelas yang mengimpor paket dari jar lokal)

Tetapi saya berhasil membangun proyek menggunakan 'mvn package'.

Saya telah menghabiskan begitu banyak waktu untuk mencari solusi, hal-hal yang telah saya lakukan:

  • Cache tidak divalidasi
  • 'mvn clean install' ketergantungan jar lokal
  • Ditandai sebagai 'autoload snapshots' dalam konfigurasi maven Intellij
  • Menunjukkan kembali maven di Intellij
  • Disinkronkan

Kesalahan ini terjadi pada saya beberapa kali sebelumnya, tetapi biasanya hanya menutup Intellij dan / atau melakukan 'mvn clean install' melakukan trik.

Tolong bantu.


1
Apakah repositori maven Anda dikonfigurasi dengan benar dengan IntelliJ?
Ruchira Gayan Ranaweera

ya benar, jalur untuk repositori adalah yang diperbarui ketika saya menggunakan 'mvn install'
Yarin Miran

3
Guci lokal adalah snapshot atau versi rilis jar? Jika jar adalah snapshot, Anda harus mencentang 'Always update snapshots' ke dalam pengaturan intellij Maven untuk memaksa pembaruan ide.
F. Geraerts

ya itu snapshot, saya sudah menandai opsi itu. Tapi tetap saja, tidak ada yang berubah :(
Yarin Miran

1
Di bagian Compiler dari Settings, apakah "use external build" dicentang? Dan di Gunakan build eksternal, opsi "Rebuild module on dependency change" juga dicentang?
F. Geraerts

Jawaban:


155

Saya tahu ini terlambat tetapi mengeksekusi mvn idea:ideamenyelesaikan masalah.


3
Ini harus menjadi jawaban yang diterima, karena menawarkan solusi aktual, bukan hanya alasan mengapa gagal. Semua pembaruan saya!
Warkst

4
mvn idea:ideabelum diperbarui, dan tidak dikelola oleh jetbrains
Sean

2
Saya harus menjalankan ulang mvn install setelah itu
Fabio F.

1
Setelah itu baru membangun kembali proyek tersebut. Terima kasih.
Duc Tran

2
Anda telah menyelamatkan saya dari keputusasaan. Saya ingin mencium Anda
Martin Bamford

29

Coba hapus semua .iml dan POM Anda. Kemudian salin dan tempel POM Anda lagi ke proyek Anda dan buka kembali dan impor kembali.


13
Mungkin hanya mencoba untuk "mengimpor ulang semua" dalam tampilan Proyek Maven, sebelum menghapus apa pun
Zveratko

3
Saya juga harus menghapus .iml, impor ulang maven tidak memperbaikinya.
Daniel de Zwaan

1
@masoodg, terima kasih banyak! kamu menyelamatkan hariku! Impor ulang saja tidak membantu. Mengikuti instruksi Anda, dan itu bekerja seperti pesona.
tabalin

Menutup Intellij, menghapus *.iml, *.iprdan *.iwsfile dari direktori root proyek, maka pembukaan kembali Intellij tetap bagi saya
theferrit32

16

Saya menemukan bahwa file .iml dan pom saya bentrok dan menyebabkan masalah.


1
Saya memiliki masalah yang sama. Saya memiliki konfigurasi dengan plugin tanggal pembuatan. Plugin ini membutuhkan properti buildDate dengan nilai ini "$ {maven.build.timestamp}". IntelliJ bermasalah dengan penguraian file pom dan iml ini tidak tersinkronisasi dengan benar dengan pom. Ketika saya berkomentar, sinkronisasi properti buildDate berfungsi dengan baik.
chalimartines

9
ada tips tentang cara memperbaikinya? Saya hanya ingin Intellij bekerja, tampaknya Netbeans menjalankan proyek apa pun, apa pun yang terjadi ... ini adalah penghancur produktivitas yang lengkap :( ...
Breno Salgado

1
Saya tidak tahu apakah perbaikan Anda sama tetapi saya harus berhenti dan memuat ulang proyek untuk memaksa IntelliJ memperbarui file IML-nya (itu belum menyegarkannya dari pom.xml karena saya telah menambahkan beberapa dependensi baru)
SonarJetLens

1
'Bagaimana' lebih berguna daripada 'mengapa'. Tambahkan beberapa detail tentang cara Anda memperbaiki masalah ini.
João Matos

2
Saya menutup IntelliJ. Lalu, saya hapus C:\Users\USERNAME\.IntelliJIdea2017.2\system. Setelah itu, saya melakukan git clean -xdfdi direktori sumber untuk menghapus semua file non-berversi, dan mengimpor proyek lagi. Bekerja seperti pesona sekarang.
koppor

15

Menambahkan beberapa tip lagi karena ini adalah hal pertama yang muncul dalam pencarian ketika saya mengalami masalah serupa (proyek dibangun di mvn, bukan di IntelliJ), seandainya itu dapat membantu orang lain.

Ketika saya mengalami ini, itu adalah perbaikan yang berbeda pada Windows dan Mac.

Di Mac, saya membuka ItellijIDEA / Preferences / Build, Execution, Deployment / Build Tools / Maven / Maven Home Directory dan mengaturnya untuk menggunakan Maven yang saya instal secara terpisah daripada Maven yang dibundel. Semua masalah build hilang.

Di Windows, saya melihat pengecualian di idea.log terkait dengan SSL dan pohon proyek saya hanya memiliki Java di bawah cabang Perpustakaan Eksternal. Dari melihat situs lain, sepertinya IntelliJ menggunakan JDK pribadinya sendiri dan bukan JDK sistemnya (meskipun dalam kasus saya, saya sudah menginstal versi JDK yang sama persis). JDK sistem saya memiliki sertifikat yang diinstal di keystore untuk server Nexus perusahaan yang tidak dimiliki oleh JDK pribadi IntelliJ, jadi pengecualian dilemparkan saat mencoba mendapatkan file dari Nexus. Untuk ini solusinya adalah dengan keluar dari IntelliJ, setel variabel lingkungan yang disebut IDEA_JDK untuk diarahkan ke JDK yang sudah saya instal yang memiliki sertifikat yang tepat dan mulai ulang IntelliJ. Semua masalah build hilang.


masalah yang sama di Linux dengan IntelliJ 2016.3.5 terbaru - pertama berhasil, kemudian setelah beberapa perubahan POM ia tidak sinkron, dan hanya mengganti impl Maven yang membantu, jadi bisa jadi hanya mengganti Maven memicu pembaruan di IntelliJ yang menyebabkan proyek ini akan sinkron lagi ...
Gregor


5

IDE menggunakan salinan Maven yang dibundel sendiri saat melakukan build. Jika maven di terminal berbeda dengan IDE, maka Anda ingin keduanya sama.

GOTO (Pada Mac) - Ide IntelliJ -> Preferensi -> Build, Execution, Deployment -> Build Tools -> Maven. Mengatur jalur untuk Direktori Rumah Maven Anda Untuk menemukan jalur untuk Maven yang Anda gunakan dari terminal, ketik perintah mvn -versiondan yang akan mencetak banyak rincian termasuk jalur dir. Taruh itu di Direktori Utama Maven .

Untuk amannya Anda juga bisa melakukan hal yang sama untuk lokasi JDK

==== Beberapa Hal Lain yang dapat menyebabkan masalah seperti itu ===

Jika melakukan mvn package atau mvn clean install build, maka itu harus dilakukan dengan cache IDE. Antara lain, yang ini biasanya membantu dengan kesalahan seperti itu ->

File -> Cache tidak valid


4

Saya tahu saya cukup terlambat untuk percakapan ini, tetapi hanya ingin memposting ini jika ada orang lain yang menemukan masalah ini. Alasan lain mengapa ini terjadi adalah karena Anda tidak merujuk ke repositori yang benar. Intellij mengambil versi bundel dari sebuah jar secara default, bukan yang dari repositori maven Anda sendiri. Konfirmasikan bahwa repositori yang terhubung adalah yang benar.


Jika Anda telah menginstal maven menggunakan homebrew, mengatur direktori home maven dengan benar (misalnya) /usr/local/Cellar/maven/3.5.4/libexec menyelesaikan masalah ini
sushilshimpi

3

Dalam kasus saya, iml saya tidak sinkron, jadi saya menghapus iml untuk modul tertentu dan kemudian di bawah opsi maven pilih unignore project untuk membuat ulang iml


3

dari command prompt, jalankan commnad: mvn idea:ideadan klik kanan pada proyek -> dari menu impor ulang dependensi


1

"simbol tidak dapat ditemukan" berarti intellij tidak dapat menyelesaikan "ketergantungan". Jadi, Anda bisa memaksa "Analisis Dependensi" dengan mengklik "Analisis" -> "Analisis Dependensi" lalu pilih "Cakupan Analisis"


1

Banyak tip berharga dalam jawaban lain di sini, hanya ingin menambahkan solusi yang berhasil untuk masalah saya .

Kami baru-baru ini mulai menggunakan repositori Maven pribadi dan selalu melakukannya mvn -s settings.xmlsaat menjalankan cmdline Maven. IntelliJ tentu saja tidak mengetahui tentang private repo, jadi perlu sedikit bantuan.

Buka Pengaturan -> Bangun, Eksekusi, Penyebaran -> Alat Bangun -> Maven dan timpa opsi "File Pengaturan Pengguna".

masukkan deskripsi gambar di sini


1

Saya memiliki masalah yang sama. Pergi ke:

File -> Struktur Proyek -> Modul . Pilih modul Anda dan di bawah tab " Dependencies ", pastikan bahwa semua dependensi maven telah ditambahkan.

Untuk memastikan Anda diperingatkan tentang masalah serupa di editor gagasan: alihkan dari "tab Dependensi" ke "Sumber" dan tambahkan tandai src Anda sebagai sumber.


0

Saya memiliki masalah yang sama. Saya telah mengubah versi maven dari 3.0.5 menjadi 3.0.4 dalam pengaturan Idea dan semuanya berfungsi dengan baik sekarang. Tidak tahu mengapa itu membantu saya.


0

Saya mencoba membuat cache tidak valid, mengubah Maven ke versi yang diinstal dan tidak ada yang berhasil.

Menutup dan membuat ulang proyek baru menyelesaikannya.


0

Saya menutup proyek dan mengimpornya lagi dengan mengklik root pom (bukan hanya foldernya, tetapi file pom itu sendiri).


0

Saya mencoba semua hal di atas tanpa kegembiraan. Namun saya melakukan satu hal yang akhirnya berhasil:

Saya pergi ke C: \ Users \ .IntellijJIdea2018.2 dan baru saja menghapus seluruh folder.

Ini menghapus semua pengaturan dan cache untuk IntelliJ. Saya harus mengimpor ulang proyek saya dari awal tetapi penghapusan dan impor ulang yang sederhana belum pernah berhasil sebelumnya, tetapi ini akhirnya membuatnya berfungsi kembali.


0

Jika Anda menggunakan gradle, coba perintah di bawah ini. Ini menyelesaikan masalah saya

gradle cleanIdea idea


0

Prosedur sederhana ini memakan waktu sekitar 1 menit tanpa risc.

  • Tutup IntelliJ
  • Hapus HANYA file khusus IntelliJ seperti .idea / *, * .iml, .settings, dll. Disarankan juga untuk menghapus POM, tapi itu bukan IMHO yang diperlukan.
  • Kemudian buat ulang proyek di IntelliJ menggunakan: File > New> Project from existing Sources> ikuti langkah-langkahnya. Berhati-hatilah untuk TIDAK mengimpor beberapa profil atau (proyek yang sama).

0

Hapus folder .idea dan tutup IDE

buka IDE lagi dan impor proyek yang akan melakukan impor baru karena folder .IDEA dihapus oleh kami sebelumnya

Periksa modul perpustakaan eksternal dan jika tidak diisi dengan dependensi yang diperlukan, periksa apakah lokasi maven settings.xml diberikan dengan benar di IDE


0

Ada juga kemungkinan yang tidak disebutkan. Jika Anda mengimpor perpustakaan dari com.sun.*. Ini juga akan menyebabkan masalah ini.

Program bekerja ketika dijalankan di ide, karena kelas-kelas ini di com.sun.*semua dalam jre/libdirektori, itu akan dimuat saat berjalan. Tetapi ketika Anda menjalankan mvn package, pustaka ini tidak akan dapat diakses karena pembatasan oracle sejak java 1.6 (pustaka ini sudah tidak digunakan lagi). Untuk mengatasi masalah ini, Anda dapat menambahkan

<build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.3.2</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                    <compilerArguments>
                        <verbose />
                        <bootclasspath>C:/Program Files/Java/jdk1.8.0_161/jre/lib/rt.jar</bootclasspath>
                    </compilerArguments>
                </configuration>
            </plugin>
        </plugins>
    </build>

ingatlah untuk mengganti jalur cootclass dengan jalur Anda sendiri rt.jar

Anda dapat mencari Access restriction: The type XXX is not accessible due to restriction on required librarylebih detail.


0

Jika ada modul yang salah dikonfigurasi, lakukan langkah-langkah ini:

  • Pergi ke Pengaturan Proyek
  • Buka Modul
  • Hapus modul yang seharusnya tidak ada di sana

0
  1. Dari tab maven klik + dan pilih pom.xml
  2. Dari tab maven klik unduh sumber dan dokumentasi
  3. Pada struktur proyek (di mana Anda dapat melihat file / direktori proyek) klik kanan proyek yang Anda coba buat dan pilih Build Module Project Name.
  4. Dari tab Jalankan- Edit Konfigurasi dengan + tambahkan Aplikasi dan isi bidang di bawah ini: i. Kelas Utama- Pilih secara manual dari tab Proyek pilih kelas utama ii. Gunakan jalur kelas modul - pilih nama aplikasi iii. Persingkat baris perintah - file classpath
  5. Sekarang jalankan aplikasinya.

0

Dalam kasus saya, masalahnya ada pada versi Project Java SDK yang berbeda. Ketika saya membangun proyek dari terminal, maven menggunakan Java 8, dan ketika saya membangun dari IDEA menggunakan Java 11.

Buka File> Struktur Proyek ... dan dalam Pengaturan Proyek, setel SDK Proyek ke versi yang Anda butuhkan.


0

Bagi saya masalahnya adalah saya memilih kompiler Ajc dalam pengaturan IntelliJ Java Compiler . Setelah saya mengubahnya kembali ke Javac semuanya bekerja dengan baik.


0

Bagi saya di Mac, saya menyelesaikannya dengan menghapus Aplikasi Ide Intellij dari komputer saya dan menghapus file cache di ~ / Library / Application Support / JetBrains / IntelliJIdea2020.1 ~ / Library / Caches / JetBrains / IntelliJIdea2020.1

Kemudian instal ulang, buka proyek saya, dan bangun dengan sukses!


0

Saya mengalami masalah yang sama. Saya berhasil menjalankan mvn clean packageperintah di terminal tetapi gagal menjalankan atau membangun dari IntellJ. Saya melakukan tindakan berikut tetapi semuanya gagal.

  • Cache tidak divalidasi
  • dijalankan mvn clean packageatau mvn clean packagedi terminal
  • Ditandai sebagai 'autoload snapshots' dalam konfigurasi maven Intellij
  • Syncornize atau Reimport
  • Hapus semua file terkait IntellJ seperti .idea dan reimport project
  • Hapus semua file ketergantungan dan kemudian jalankan mvn clean package
  • Ganti versi Java atau gunakan Java tertanam di IntellJ
  • Lari mvn idea:idea
  • Ubah Maven Home
  • tandai direktori src sebagai sumber di tab modul

Hal terakhir yang saya lakukan berhasil: Hapus .idea dan .iml dalam proyek, hapus semua file dependensi, lalu hapus IntellJ dari komputer. Setelah menginstal ulang IntellJ, proyek saya berhasil dibangun. Saya berharap saya bisa memiliki cara yang lebih baik untuk menyelesaikan ini.

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.