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.


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".


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.


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


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.


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?)


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


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.


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


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.


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


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.


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


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.


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


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.


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.


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.


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.


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.


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


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.


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"

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.


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.


0

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


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.


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


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.


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.


0

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

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.