Kesalahan: Tidak dapat menemukan atau memuat kelas utama di IDE intelliJ

151

Saya seorang pemula di Jawa dan saya mencoba menjalankan kode saya menggunakan IntelliJ yang baru saja saya instal sebagai IDE saya dengan JDK 1.7. Potongan kode berikut ini bahkan tidak dapat dikompilasi dan terus memberi saya kesalahan:

Error: Could not find or load main class libTest

Kode

import java.lang.Integer;
import java.lang.String;
import java.lang.System;
import java.util.*;

class book {

    private String name = "trial";
    private int bookCode=1;
    private int issued=0;

     public void Issue(){
         if(issued==0) {
             issued=1;
             System.out.println("You have succesfully issued the book");
         }
         else {
             System.out.println("The book is already issued. Please contact the librarian for further details");
         }
    }

    public int checkCode() {
        return bookCode;
    }

    String readName() {
        return name;
    }

    public void setName(String newName){
        name=newName;
    }

    public void setBookCode(int newCode){
        bookCode=newCode;
    }
}

class library {
    private ArrayList books=new ArrayList();

    public void getList(){
        for(int bk:books){
            String bName=books(bk).readName();
            System.out.println((bk+1)+")  "+bName);
        }
    }
}

public class libTest{
    public static void main(String[] args){
        library newLib= new library();
        System.out.println("code working");
   }
}

Apakah ada perubahan yang harus saya lakukan dalam pengaturan kompiler ?? Atau kodenya.

Mailman yang Bingung
sumber
2
Apa nama file sumbernya? Apakah itu libTest.java?
QuantumMechanic
import java.lang...Ini terjadi secara otomatis untuk kelas dalam langpaket.
Andrew Thompson
Seperti yang disebutkan oleh QuantumMechanic, kelas utama Anda harus berada dalam file dengan nama persis seperti itu. Jadi libTest harus dalam file java bernama libTest.java, jika tidak kompiler java akan mengeluh. Juga, apakah Anda membuat sumber melalui IDEA, atau apakah Anda membuat proyek IDEA baru di atas sumber yang ada?
mcfinnigan
mencoba mengimpor java.lang membuat perbedaan
Mailman Bingung
mereka identik. Apakah ada alasan lain mengapa kesalahan semacam itu harus ditandai?
Mailman Bingung

Jawaban:

178

Ini mungkin membantu:

1) "Bangun" menu -> " Rebuild Project". Terkadang Intellij tidak menulis ulang kelas karena sudah ada, dengan cara ini Anda meminta Intellij untuk menulis ulang semuanya.

2) "Jalankan" menu -> " Edit configuration" -> hapus profil -> tambahkan kembali profil ("Aplikasi" jika itu adalah aplikasi Java), pilih kelas utama Anda dari menu dropdown "Kelas Utama".

3) "Bangun" menu -> " Rebuild Project".

Ehsan
sumber
9
Saya punya proyek baru di IntelliJ dan itu tidak akan berjalan. Rebuild Projectbekerja untukku!
Danny Harding
Opsi ke-2 bekerja untuk saya. Tetapi hapus profil konfigurasi dan kemudian, klik kanan kelas Anda -> jalankan
NoName
2
"Build" menu -> "Rebuild Project- lakukan pekerjaan! Terima kasih
Yan Khonski
1
Opsi pertama rebuild projectberhasil untuk masalah saya. Terima kasih!
khwilo
1
Saya menghapus .idea, .mvn dan direktori target lainnya kemudian memulai kembali IntelliJ. Pergi ke event log, menambahkan proyek sebagai proyek Maven dan kemudian mengikuti langkah-langkah yang disebutkan oleh @Kishore di sini. Ini bekerja sekarang.
Sunny Shekhar
105

Jika tidak ada jawaban di atas yang berfungsi untuk Anda, cukup tutup intelliJ IDE Anda dan hapus file dan folder intelliJ IDE dari root proyek:

rm -rf .idea *.iml 

Kemudian buka proyek dengan intelliJ. Itu harus bekerja sekarang.

youhans
sumber
1
Ini berhasil untuk saya. Saya juga mengimpor kembali proyek saya ke IntelliJ, tetapi untuk opsi "Modul Grup", saya menggunakan "menggunakan nama yang memenuhi syarat" (alih-alih "menggunakan grup modul eksplisit".
markhops
3
Menghapus .ideafolder selalu menyelesaikan semua masalah dengan JetBrains 'IDEs :)
shelll
ini juga bekerja untuk saya, saya penggemar berat Intellij, tetapi mereka juga harus belajar melakukan hal-hal sederhana.
Zwakele Mgabhi
Buang 30+ menit. akhirnya inilah yang harus saya lakukan untuk membuat semuanya bekerja
vins
Hanya metode ini di halaman ini yang berfungsi untuk saya.
zionpi
82

Bagi saya solusinya adalah memperbaiki direktori keluaran di bawah pengaturan proyek. Sebelumnya saya hanya menggunakan "target" untuk keluaran kompiler Proyek. Sebagai gantinya saya memutakhirkannya untuk memiliki path lengkap mis. D: \ dev \ sigplusjava2_68 \ target masukkan deskripsi gambar di sini

Paman Iroh
sumber
10
itu tidak membantu saya
Pavel
Mungkin saja solusi saya di sini sebenarnya adalah variasi jawaban @ Ehsan yang halus di bawah ini. Mungkin dengan menentukan direktori target itu memberikannya lokasi baru di mana untuk mengkompilasi semua objek pada dasarnya melakukan pekerjaan yang sama dengan yang Rebuild Projectdilakukan.
Paman Iroh
1
@UncleIroh Jika itu melakukan pekerjaan yang sama, membangun kembali + membaca konfigurasi. akan memperbaiki masalah pada awalnya. Tidak, tetapi solusi Anda berhasil.
hyperum
Ini harus menjadi jawaban yang diterima. Selalu menggangguku lagi ..: p
Christopher Stock
37

Saya memiliki masalah ini dan saya mencoba semuanya di bawah matahari yang dapat saya pikirkan dan di situs ini.

Tidak ada kelas Java saya yang diambil setelah saya menarik dari cabang terpencil. Semua kelas memiliki Js merah dengan nama mereka di Project Hierarchy, bukan blue Cs.

Pada akhirnya, saya mencoba mengikuti tutorial ini dan beberapa langkah dalam mencoba sesuatu yang tidak dijelaskan dan memperbaiki masalah ini: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

Inilah yang saya lakukan:

  1. File Goto | Struktur Proyek, atau tekan Crtl + Shift + Alt + S
  2. Pilih Modul di bawah bagian Pengaturan Proyek.
  3. Di tab Sumber, klik Sumber pada baris 'Tandai sebagai:'.
  4. Klik tombol Terapkan.

Untuk beberapa alasan, semua kelas saya kemudian memiliki nilai C biru.

Seseorang dengan pemahaman yang lebih baik tentang bagaimana IntelliJ dan / atau IDE mungkin dapat menjelaskan fenomena tersebut, tetapi yang saya tahu sekarang adalah dapat melihat semua kelas dan yang lebih penting yang utama, dan jalankan.

Sarah Cohen
sumber
Ini hanya berfungsi untuk saya setelah saya menutup Intellij, menghapus folder .idea kemudian membuka kembali Intellij dan ikuti langkah-langkah di atas.
Shell_Leko
14

Membuat outfolder secara eksplisit dan kemudian mengatur jalur output keC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

SEPERTI INI

sepertinya bekerja untuk saya ketika baru saja out, dan mengharapkan IntelliJ untuk membuat folder tidak.


Coba IntelliJ juga membuat Anda menjalankan konfigurasi baru:

Temukan yang sebelumnya dengan mengklik

! [Edit Konfigurasi

lalu hapus

masukkan deskripsi gambar di sini

dan tekan oke.

Sekarang, (LANGKAH PENTING) buka kelas yang berisi metode utama Anda. Ini mungkin paling mudah dilakukan dengan mengklik nama kelas di sebelah kiri Project Pane.

Beri Alt+ Shift+ F10dan Anda harus mendapatkan

INI

Sekarang tekan Enter!!

Tadah ?? (Apa itu bekerja?)

Brad Turek
sumber
Hal konfigurasi run berfungsi, terutama jika Anda memindahkan main()fungsi dari class Mainke kelas lain. Dalam hal ini, edit run config seperti yang ditunjukkan di atas dan ubah nilai 'Kelas utama' ke nama kelas Anda (sepenuhnya memenuhi syarat).
forumulator
Saya hanya memiliki opsi "Edit konfigurasi", tidak berfungsi untuk saya (
Ver Nick
Saya tidak bisa membantu tetapi memperhatikan Anda merasakan nama proyek Anda dan menjalankan konfigurasi, tetapi masih terlihat jelas di screenshot kedua
Jacob Schneider
Jacob Schneider, itu dia. Saya tidak ingat mengapa saya menyensornya — mungkin karena kehati-hatian yang salah tempat.
Brad Turek
14

Batalkan cache dan mulai ulang intellij Anda, itu berhasil untuk saya. Buka File seperti yang ditunjukkan pada gambar terlampir

S_K
sumber
7

Saya tahu ini ditanyakan beberapa waktu lalu, tetapi saya hanya tersandung masalah ini dan berpikir temuan saya mungkin membantu orang lain. Seperti yang ditunjukkan, pesan kesalahan pada dasarnya adalah hasil dari folder keluar. Itu karena, ketika Anda mencoba menjalankan program, ia mengkompilasi kode terlebih dahulu, dan menempatkan hasil yang dikompilasi ke lokasi keluar, dan kemudian mencoba memuat kode yang dikompilasi dari lokasi keluar. Jika kode yang dikompilasi tidak di lokasi yang diharapkan, Anda akan mendapatkan kesalahan.

Maksud saya terutama ingin berbagi adalah bahwa beberapa kali, kode tidak dikompilasi (dibangun), meskipun konfigurasi Anda menjalankan menentukan "Bangun" di bagian "Sebelum peluncuran" pada panel konfigurasi.

Kapan ini bisa terjadi? Satu situasi yang dapat menyebabkan ini terjadi adalah jika Anda menggunakan modul dan Anda secara manual menghapus direktori modul keluar. Sebagai contoh, jika saya memiliki modul bernama "foo", harus ada direktori bernama foo di bawah / produksi. Jika Anda menghapusnya secara manual, sistem pembangunan mungkin tidak tahu bahwa itu perlu dibangun kembali.

Lebih buruk lagi, jika Anda memilih Build | Bangun modul 'foo', masih mungkin tidak membangun kembali modul. Jika itu masalahnya, Anda harus memilih file dalam modul, misalnya 'bar.java' dan kemudian pilih Build | Kompilasi ulang 'bar.java'. Sekarang direktori keluar / produksi / foo harus dikembalikan.

Karena IntelliJ biasanya tahu tentang perubahan yang terjadi, ini mengejutkan saya, dan butuh sedikit waktu untuk mencari tahu, jadi saya pikir saya akan berbagi.

msoltys
sumber
6

Periksa modul kelas Anda : Saya mengalami masalah ini dengan intellij: Saya punya proyek multi-modul pakar, masalahnya adalah saya menjalankan kelas yang tidak ada modul dalam konfigurasi, jadi masalah saya diperbaiki dengan mengatur modul yang tepat ( "edit konfigurasi" -> "gunakan kelas modul")

semoga ini membantu Anda

Abdessattar NOISSI
sumber
Bekerja untuk saya juga. Terima kasih! Mungkin ada yang salah saat menginstal pemutakhiran IntelliJ atau plugin Scala. Setelah itu Anda mendapatkan masalah aneh ini. Sangat menyebalkan dan menghabiskan waktu. Semoga JetBrains menemukan resolusi.
André van Delft
6

Saya harus menandai folder "src" sebagai "Sumber". Setelah memulai kembali IntelliJ dan membangun kembali proyek saya dapat menjalankan proyek tanpa masalah lebih lanjut (lihat tangkapan layar ). Sunting: Anda dapat mengakses tab "Struktur Proyek" melalui File-> Struktur Proyek atau dengan menekan Ctrl + Shift + Alt + S.

NEMESIS
sumber
1
Jika Anda (seperti saya) tidak memiliki tab 'sumber', maka Anda harus menambahkan modul baru (klik hijau +) dan pilih folder utama Anda sebagai sumber. Tidak ada yang akan ditimpa, dan folder src akan berubah menjadi biru.
john ktejik
5

Buka Tab Modul (Tekan Ctrl + Shift + Alt + S). Saya punya dua modul dalam satu proyek. Saya telah memecahkan masalah setelah melepaskan modul redundan kedua (lihat tangkapan layar).masukkan deskripsi gambar di sini

Taras Melnyk
sumber
4

Saya menghadapi masalah seperti itu ketika kelas ada di folder default, yaitu ketika kelas tidak mendeklarasikan paket.

Jadi saya kira menggunakan pernyataan paket (mis. package org.me.mypackage;) Di atas kelas harus memperbaikinya.

Hakan Serce
sumber
apakah saya meniru baris kode itu ?? .. bagaimana saya memodifikasinya jika saya harus ??
Mailman Bingung
Cukup gunakan nama paket Anda sendiri, seperti ini:package org.confused.mailman;
Hakan Serce
Pernyataan paket harus sesuai dengan tempat IDE meletakkan file. Jika IDE tidak meletakkan file di sourceBase / org/confused/mailmankemudian menambahkan bahwa paket tidak akan membantu.
QuantumMechanic
Saya kira IDE akan memandu ini, dan secara otomatis memperbaikinya, jika perbaikan yang disarankan dipilih.
Hakan Serce
tidak membantu: / .. IDE sepertinya tidak terganggu dengan perubahan yang saya buat .. itu melempar kesalahan di atas dan duduk dan bersantai
Mailman Bingung
3

File> Struktur Proyek> Modul> Tandai folder "src" sebagai sumber. Ini harus memperbaiki masalah. Periksa juga bahasa terbaru yang dipilih sehingga Anda tidak perlu mengubah kode atau melakukan perubahan konfigurasi. masukkan deskripsi gambar di sini

Sumit Jadiya
sumber
2

Dalam kasus saya masalahnya tampaknya terkait dengan peningkatan IntelliJ. Ketika saya melakukan ini, saya menimpa file dari IntelliJ lama dengan file dari IntelliJ baru (komunitas 2017 hingga komunitas 2018). Setelah itu semua proyek saya rusak. Saya mencoba semua yang ada di utas ini dan tidak ada yang berhasil. Saya mencoba memutakhirkan gradle ke versi terbaru (4 hingga 4.8) dan itu tidak berhasil. Satu-satunya hal yang berhasil bagi saya adalah menghapus seluruh folder IntelliJ dan menginstalnya kembali. Semua proyek saya berhasil setelah itu.

buta
sumber
Sepertinya ini yang sebenarnya. Saya menggunakan portable intellij jadi saya mengganti nama folder utama dari idea\binmenjadi idea_old\bindan mengganti nama folder pengaturan %user%\usernameyang .IntelliJIdea2018.2akan .IntelliJIdea2018.2_olddiekstraksi ulang file zip intellij untuk mulai menggunakannya sebagai versi portabel baru yang segar (Ini adalah versi 2018.2.1) dengan Spring Aplikasi boot dari beberapa modul yang terpisah (tidak ditautkan dalam pom.xml induk tunggal) masing-masing adalah aplikasi pegas boot dengan pom.xml dan voila !!! Semua berfungsi, folder target dibuat, kompilasi sebelum dijalankan melalui dasbor boot spring.
Anddo
2

Tandai direktori sebagai direktori sumber. Dibuka melalui Ctrl + Shift + Alt + S

masukkan deskripsi gambar di sini

Crt
sumber
1

Bagi saya - saya mencoba beberapa opsi di atas, tidak berhasil. Kemudian saya hanya mengganti nama kelas Aplikasi saya dan itu mungkin memaksa IntelliJ untuk membuat toples baru dan pesan kesalahan mulai berubah. Kemudian saya menamainya kembali dan berhasil.

JavaTec
sumber
1

Saya telah mencoba semua peretasan yang disarankan di sini - tidak berhasil. Pada akhirnya saya hanya membuat aplikasi Maven baru dan secara manual disalin ke dalamnya - satu per satu - pom.xml dan file java dan sumber daya. Semuanya bekerja sekarang. Saya baru mengenal IntelliJ dan sama sekali tidak terkesan tetapi betapa mudahnya untuk membuatnya menjadi tidak stabil.

Pierluigi Vernetto
sumber
Anda harus menutup intellij, menghapus folder .idea (mungkin file tersembunyi); kemudian buka folder lagi di intellij - itu akan menginisialisasi ulang proyek intelli berdasarkan dari konfigurasi maven / grade.
Jeremy
1

masukkan deskripsi gambar di sini

modules.xml dengan konten yang salah, saya tidak tahu apa yang terjadi dengan IDEA saya.

ibamboo
sumber
1

Saya mewarisi banyak file .JAVA dari tempat lain dan tidak tahu bagaimana membuatnya bekerja di IDE apa pun. Akhirnya saya harus pergi ke baris perintah di mana file Main.JAVA berada dan dijalankan javac Main.java. Ini menciptakan banyak file .CLASS. IDE kemudian dapat mengetahui apa yang harus dilakukan.

codeMonkey
sumber
1

Saya mendapatkan kesalahan ini saat menggunakan Scala / SBT . IntelliJ tidak dapat menemukan kelas utama, meskipun semuanya telah diatur dengan benar. Solusi saya: hapus <user>/.sbt/<version>/plugins/targetfolder, lalu restart IntelliJ.

Beni Murza
sumber
1

Saya menggunakan IntelliJ dengan Spring dan kelas utama saya dibungkus JAR. Saya harus menandai 'Sertakan dependensi dengan lingkup "Disediakan" dalam dialog konfigurasi Run / Debug

Ohad Y
sumber
1

Kami berada di File / Struktur Proyek .. Jawabannya mungkin:

Folder yang diindikasikan sebagai "root konten" memerlukan folder anak di mana kodenya. Plus temukan tombol yang menandai kode sebagai dikecualikan dan tidak. Jangan bingung dengan kotak centang yang menyatakan dikecualikan tanpa memberi tahu pada fase apa dan apa ** Apakah kompilator mengecualikan atau mengecualikan runtime? Anda ditakdirkan untuk menguji dan banyak. Jadi tidak ada kotak centang itu tetapi ikon dan warna.

Sebagai sebuah ide, kita perlu memecahkan bagaimana cara kerjanya semula. Mereka tidak pernah berhasil di tempat pertama dan mulai menambahkan hal-hal dalam gaya codaculation prematur. Sudah bertahun-tahun dan Anda tidak bisa mengharapkan perbaikan apa pun. Tetapi sebagai obat kita dapat meretas beberapa cara untuk memperbaikinya setiap saat.

Kurskinen
sumber
1

Hal lain yang dapat Anda periksa di sini adalah perintah aktual yang diteruskan ke JVM dan pastikan itu terlihat OK. Gulir ke atas Run konsol Anda, itu harus menjadi baris pertama.

Spasi di bidang Run Configuration VM Options Anda akan merusak perintah startup aplikasi dan dapat menghasilkan pesan kesalahan ini

-DsomeArgument="arg with space must be quoted"
Ya
sumber
Terima kasih! Ini berhasil bagi saya !!
Jcoder
0

Menguraikan solusi Brad Turek ... Salah satu templat proyek Java IntelliJ default mengharapkan file bernama Main yang mendefinisikan titik masuk metode Main dan main () . Jika metode ini terkandung dalam file lain (dan kelas), ubah konfigurasi Jalankan :

Jalankan Jendela Konfigurasi

  1. Dengan proyek terbuka di IntelliJ, gunakan menu Run: Edit Configurations ... untuk membuka jendela konfigurasi build.
  2. Jika entri untuk kelas Utama tidak mencantumkan nama file Anda yang berisi kelas yang mengekspos utama () metode entri , masukkan nama file yang benar. (Konfigurasi pada gambar salah, itulah sebabnya merah pada panel konfigurasi.)
  3. Saya main () metode entri di kelas (dan file) ScrabbleTest . Jadi mengubah kelas Utama: ke ScrabbleTest memperbaiki kesalahan runtime.

Seperti yang orang lain catat, Anda harus ReBuild menggunakan konfigurasi baru. Saya menggunakan sebuah paket, tetapi sepertinya itu tidak membuat perbedaan IME. Semoga ini membantu.

JHake
sumber
0

Dalam kasus saya di build.gradle modul, tugas mainClassName harus menyatakan nama kelas yang sepenuhnya memenuhi syarat, yaitu. sebagaimana ditentukan sebagai nama paket dalam file kode sumber kelas utama.

Matius
sumber
0

Cukup bangun ulang proyek (CTRL + F9) dan periksa kembali (Edit Konfigurasi) jika Anda telah menetapkan kelas Utama dengan benar, dan modul (jika ada)

AlexPes
sumber
0

Solusi sederhana adalah pergi ke folder yang didukung di baris perintah, di mana folder root proyek. Anda harus menginstal SBT di mesin Anda.

Jika Anda telah menginstal sbt, silakan jalankan perintah "paket sbt", ini akan mengkompilasi ulang proyek jika berhasil, kembali ke intelliJ itu akan bekerja.

Ratheesh
sumber
Selamat datang di SO! Ketika Anda membalas sebuah jawaban, bahkan jika itu benar, cobalah untuk menjelaskannya sedikit.
David García Bodego
0

Dalam kasus saya, saya memiliki (relatif) argumen vm panjang yang dikonfigurasi. Mengubah argumen ini (jika memungkinkan) ke variabel lingkungan memperbaiki masalah bagi saya

Ahmed Sayed
sumber
Anda tidak dapat memiliki ruang di opsi VM Anda kecuali jika Anda menempatkan "tanda kutip" di sekitar argumen
Yap
0

Dalam kasus saya, aplikasi berjalan dengan baik ketika kode awalnya berada di bawah direktori / src di bawah proyek. Kemudian saya menambahkan / main / direktori java setelah / src, kemudian kesalahan "Tidak dapat menemukan atau memuat kelas utama ..." terjadi. Pada saat itu Anda tidak dapat menambahkan /src/main/java/YourMain.java ke konfigurasi run. Apa yang saya lakukan adalah menghapus konfigurasi proses, kemudian klik kanan proyek-> Buka Pengaturan Modul (atau F4 setelah mengklik panel Proyek) -> Pengaturan Proyek-> Modul menghapus (x) Root Konten lama dan + Tambahkan Root Konten, pilih / src / main / java. Bangun kembali proyek dan berjalan.

TGU
sumber
0

Anda mungkin akan menentukan paket yang salah dan hierarki paket tidak akan benar. Lihat ke bawah

masukkan deskripsi gambar di sini

Idenya akan menyoroti jalan yang salah dalam kasus itu.

Akash Yellappa
sumber
0

Dalam kasus saya, ini adalah proyek maven, saya Mengimport maven (klik kanan pada file pom.xml dan klik Reimport ) itu langsung bekerja.

ddc
sumber