Hata: intelliJ IDE'de ana sınıf bulunamadı veya yüklenemedi


165

Java konusunda acemiyim ve kodumu JDK 1.7 ile IDE'm olarak yeni yüklediğim IntelliJ kullanarak çalıştırmaya çalışıyorum. Aşağıdaki kod parçası derleme bile yapmıyor ve bana hata vermeye devam ediyor:

Error: Could not find or load main class libTest

Kodu

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");
   }
}

Derleyici ayarlarında yapmam gereken herhangi bir değişiklik var mı? Yoksa kod mu?


2
Kaynak dosyanın adı nedir? Öyle mi libTest.java?
QuantumMechanic

import java.lang...Bu, langpaketteki sınıflar için otomatik olarak gerçekleşir .
Andrew Thompson

QuantumMechanic'te belirtildiği gibi, ana sınıfınızın tam olarak bunun gibi adlandırılmış bir dosyada olması gerekir. Bu yüzden libTest'in libTest.java adlı bir java dosyasında olması gerekir, aksi takdirde java derleyicisi şikayet eder. Ayrıca, kaynağı IDEA üzerinden mi yarattınız yoksa mevcut kaynak üzerinden yeni bir IDEA projesi mi yarattınız?
mcfinnigan

java.lang dosyasını içe aktarmayı denedi hiçbir fark
yaratmadı

aynıdırlar. Böyle bir hatanın işaretlenmesi için başka bir neden var mı?
Confused Mailman

Yanıtlar:


189

Bu yardımcı olabilir:

1) "Oluştur" menüsü -> " Rebuild Project". Bazen Intellij sınıfları zaten var oldukları için yeniden yazmaz, bu şekilde Intellij'den her şeyi yeniden yazmasını istersiniz.

2) "Çalıştır" menüsü -> " Edit configuration" -> profili silin -> profili geri ekleyin (Java uygulamasıysa "Uygulama"), "Ana Sınıf" açılır menüsünden ana sınıfınızı seçin.

3) "Oluştur" menüsü -> " Rebuild Project".


11
IntelliJ'de yepyeni bir projem vardı ve çalışmıyordu. Rebuild Projectbenim için çalıştı!
Danny Harding

2. seçenek benim için çalıştı. Ancak konfigürasyon profilini silin ve ardından sınıfınıza sağ tıklayın -> çalıştır
NoName

3
"Build" menu -> "Rebuild Project- işi yaptı! Teşekkürler
Yan Khonski

1
İlk seçenek rebuild projectsorunum için çalıştı. Teşekkür ederim!
khwilo

1
.İdea, .mvn ve diğer hedef dizinleri kaldırdım ve ardından IntelliJ'i yeniden başlattım. Olay günlüğüne gittim, projeyi bir Maven projesi olarak ekledikten sonra @ Kishore tarafından belirtilen adımları burada takip ettim. Şimdi çalışıyor.
Sunny Shekhar

125

Yukarıdaki cevaplardan hiçbiri sizin için işe yaramadıysa, intelliJ IDE'nizi kapatın ve intelliJ IDE dosyasını ve klasörünü projenin kökünden kaldırın:

rm -rf .idea *.iml 

Ardından intelliJ ile projeyi açın. Şimdi çalışmalı.


1
Bu benim için çalıştı. Ayrıca projemi IntelliJ'e yeniden aktardım, ancak "Grup Modülleri" seçeneği için "nitelikli adlar" kullandım ("açık modül grupları kullanmak" yerine.
markhops

8
.ideaKlasörü silmek her zaman JetBrains'in
IDE'leriyle

bu benim için de çalıştı, Intellij'in büyük bir hayranıyım, ancak basit şeyler yapmayı da öğrenmeleri gerekiyor.
Zwakele Mgabhi

30 dakikadan fazla boşa harcandı. nihayet işlerin yürümesi için yapmam gereken buydu
vins

1
Bu işe yaradı ama proje ayarlarını tekrar yapmam gerekti.
hız

86

Benim için çözüm, proje ayarları altında çıktı dizinini düzeltmekti. Daha önce Project derleyici çıktısı için sadece "hedef" kullanıyordum. Bunun yerine tam bir yola sahip olacak şekilde güncelledim, örneğin D: \ dev \ sigplusjava2_68 \ target görüntü açıklamasını buraya girin


11
bana yardımcı olmadı
Pavel

Buradaki çözümümün, @ Ehsan'ın aşağıdaki yanıtının ince bir varyasyonu olması mümkündür. Belki de hedef dizini belirterek ona, temelde aynı işi yapan tüm nesneleri derlemek için yeni bir konum verir Rebuild Project.
Uncle Iroh

1
@UncleIroh Aynı işi yaptıysa, yapılandırmayı yeniden oluşturma + okuma. sorunu başlangıçta düzeltirdi. Olmadı, ama çözümün yaptı.
hyperum

Kabul edilen cevap bu olmalıdır. Beni her zaman tekrar rahatsız ediyor ..: p
Christopher Stock

42

Bu problemi yaşadım ve aklıma gelen her şeyi güneşin altında ve bu sitede denedim.

Uzak bir şubeden çekildikten sonra Java sınıflarımdan hiçbiri alınmıyordu. Proje Hiyerarşisinde tüm sınıfların adlarına göre mavi C'ler değil kırmızı J'ler vardı.

Sonunda, bu öğreticiyi izlemeye çalıştım ve birkaç adımda açıklanmayan bir şeyi denedim ve sorunu çözdüm: https://www.jetbrains.com/help/idea/creating-and-managing-modules.html

İşte yaptığım şey:

  1. Goto Dosyası | Proje Yapısı veya Crtl + Shift + Alt + S tuşlarına basın
  2. Proje Ayarları bölümünün altında Modüller'i seçin.
  3. Kaynaklar sekmesinde "Farklı işaretle:" satırındaki Kaynaklar'ı tıklayın.
  4. Uygula düğmesine tıklayın.

Nedense, tüm sınıflarımın mavi C'leri vardı.

IntelliJ ve / veya IDE'lerin fenomeni nasıl açıklayabileceğini daha iyi anlayan biri, ama artık tek bildiğim tüm sınıfları ve daha da önemlisi asıl olanı görebiliyor ve koşuyor.


Bu sadece Intellij'i kapattıktan, .idea klasörünü kaldırdıktan sonra Intellij'i yeniden açtıktan ve yukarıdaki adımları izledikten sonra benim için çalıştı.
Shell_Leko

23

Önbelleği geçersiz kılın ve IntelliJ'inizi yeniden başlatın, benim için çalıştı.

Dosya menüsü → Önbellekleri Geçersiz Kıl / Yeniden Başlat ... seçeneği


14

Açıkça bir outklasör oluşturma ve ardından çıktı yolunuC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

BUNUN GİBİ

Benim için işe yarıyor gibiydi outve IntelliJ'in klasörü yapmasını beklemiyordum.


Ayrıca IntelliJ'in size yeni bir çalıştırma yapılandırması yapmasını sağlayın:

Bir öncekini tıklayarak bulun

! [Yapılandırmaları Düzenle

sonra onu kaldır

görüntü açıklamasını buraya girin

ve tamam vur.

Şimdi, (ÖNEMLİ ADIM) ana yönteminizi içeren sınıfı açın. Bu muhtemelen en kolayı sol taraftaki Proje Bölmesindeki sınıf adına tıklayarak yapılır.

Bir Alt+ Shift+ verin F10ve bir

BU

Şimdi vur Enter!!

Tadah? (İşe yaradı mı?)


Çalıştırma yapılandırması işi, özellikle main()işlevi class Mainbaşka bir sınıfa taşıdığınızda çalışır . Bu durumda, çalıştırma yapılandırmasını yukarıda gösterildiği gibi düzenleyin ve 'Ana sınıf'ın değerini sınıf adınıza (tam nitelikli) değiştirin.
forumulator

Yalnızca "Yapılandırmayı düzenle" seçeneğim var, benim için çalışmıyor (
Ver Nick

Yardım edemedim ama proje adınızı algıladığınızı ve yapılandırmayı çalıştırdığınızı fark ettim, ancak ikinci ekran görüntüsünde hala açıkça görülebiliyor
Jacob Schneider

Jacob Schneider, öyle. Neden onu sansürlediğimi hatırlayamıyorum - muhtemelen yanlış yerleştirilmiş bir tedbir bolluğundan.
Brad Turek

7

Bunun bir süre önce sorulduğunu biliyorum, ancak bu konuyla ilgili tökezledim ve bulgularımın başkalarına yardımcı olabileceğini düşündüm. Belirtildiği gibi, hata mesajı temelde çıkış klasörünün bir sonucudur. Bunun nedeni, programı çalıştırmaya çalıştığınızda, önce kodu derler ve derlenen sonucu çıkış konumuna koyar ve ardından derlenen kodu dışarıdan yüklemeye çalışır. Derlenen kod beklenen konumda değilse, hatayı alırsınız.

Özellikle paylaşmak istediğim nokta, çalıştırma yapılandırmanız yapılandırma panelinin "Başlatmadan önce" bölümünde "Oluştur" belirtmesine rağmen, bazen kodun derlenmemiş (oluşturulmamış) olmasıdır.

Bu ne zaman olabilir? Bunun olmasına neden olabilecek bir durum, modüller kullanıyorsanız ve modül çıkış dizinini manuel olarak silerseniz olabilir. Örneğin, "foo" adında bir modülüm varsa, out / production altında foo adında bir dizin olmalı. Manuel olarak silerseniz, yapı sistemi yeniden oluşturulması gerektiğini bilmeyebilir.

Daha da kötüsü, Build | Modül 'foo' oluşturun, yine de modülü yeniden oluşturmayabilir. Bu durumda, modülde bir dosya seçmelisiniz, örneğin 'bar.java' ve ardından Oluştur | 'Bar.java'yı yeniden derleyin. Şimdi çıkış dizini out / production / foo geri yüklenmelidir.

IntelliJ tipik olarak olup biten herhangi bir değişikliği bildiğinden, bu beni şaşırttı ve anlamam biraz zaman aldı, bu yüzden paylaşayım dedim.


7

"Src" klasörünü "Kaynaklar" olarak işaretlemek zorunda kaldım. IntelliJ'i yeniden başlattıktan ve projeyi yeniden oluşturduktan sonra projeyi daha fazla sorun olmadan çalıştırabilirim ( ekran görüntüsüne bakın ). Düzenleme: "Proje Yapısı" sekmesine Dosya-> Proje Yapısı üzerinden veya Ctrl + Shift + Alt + S tuşlarına basarak erişebilirsiniz.


1
Eğer (benim gibi) bir 'kaynaklar' sekmeniz yoksa, yeni bir modül eklemelisiniz (yeşil + işaretine tıklayın) ve kaynak olarak ana klasörünüzü seçmelisiniz. Hiçbir şeyin üzerine yazılmaz ve src klasörü maviye döner.
john ktejik

6

Sınıf modülünüzü kontrol edin : Bu sorunla intellij ile karşılaştım: Bir maven çoklu modül projem var, sorun konfigürasyonda modülde bulunmayan bir sınıfı çalıştırıyorum, bu nedenle sorunum doğru modülü ayarlayarak düzeltildi ( "yapılandırmayı düzenle" -> "modül sınıfını kullan")

bu sana yardımcı olabilir mi


Benim için de çalıştı. Teşekkürler! IntelliJ veya Scala eklentisinin yükseltmesini yüklerken bir şeyler muhtemelen ters gitti. Daha sonra bu garip problemi yaşarsınız. Çok can sıkıcı ve zaman alıcı. Umarım JetBrains bir çözüm bulur.
André van Delft

5

Modüller Sekmesini Açın (Ctrl + Üst Karakter + Alt + S tuşlarına basın). Bir proje altında iki modülüm vardı. İkinci yedek modülü çıkardıktan sonra sorunu çözdüm (ekran görüntüsüne bakın).görüntü açıklamasını buraya girin


4

Sınıf varsayılan klasörde olduğunda, yani sınıf bir paket bildirmediğinde bu tür sorunlarla karşılaştım.

Bu yüzden package org.me.mypackage;, sınıfın üstünde bir paket ifadesi (örn. ) Kullanmak bunu düzeltmelidir.


o kod satırını kopyalıyor muyum ?? .. mecbur kalırsam nasıl değiştirebilirim ??
Confused Mailman

Kendinize ait bir paket adı kullanın, bunun gibi:package org.confused.mailman;
Hakan Serce

Paket deyimi, IDE'nin dosyayı koyduğu yerle eşleşmelidir. IDE, dosyayı sourceBase / 'e koymadıysa, org/confused/mailmanbu paket satırının eklenmesi yardımcı olmayacaktır.
QuantumMechanic

Sanırım IDE bu konuda rehberlik edecek ve önerilen düzeltme seçilirse bunu otomatik olarak düzeltecektir.
Hakan Serce

yardımcı olmuyor: / .. IDE yaptığım değişikliklerin hiçbirinden rahatsız görünmüyor ... yukarıdaki hatayı atıyor ve arkaya yaslanıp rahatlıyor
Confused Mailman

4

Dosya> Proje Yapısı> Modüller> "src" klasörünü kaynak olarak işaretleyin. Bu, sorunu çözmeli. Ayrıca en son dilin seçildiğini kontrol edin, böylece kodu değiştirmeniz veya herhangi bir yapılandırma değişikliği yapmanız gerekmez. görüntü açıklamasını buraya girin


Yinelenen yanıt.
Jay Sullivan

2

Benim durumumda sorun IntelliJ'in yükseltilmesiyle ilgili görünüyordu. Bunu yaptığımda, eski IntelliJ'deki dosyaların üzerine yeni IntelliJ'deki (2017 topluluğundan 2018 topluluğuna) dosyalar yazdım. Bundan sonra tüm projelerim kırıldı. Bu konudaki her şeyi denedim ve hiçbiri işe yaramadı. Gradle'ı en son sürüme (4'ten 4.8'e) yükseltmeyi denedim ve bu işe yaramadı. Benim için çalışan tek şey, IntelliJ klasörünün tamamını silip yeniden yüklemek oldu. Tüm projelerim bundan sonra çalıştı.


Görünüşe göre bu aslında öyle. Ben dan gibi ana klasör adını bu yüzden taşınabilir intellij kullanmak idea\binolmaya idea_old\binklasör ayarları ve adını %user%\usernamehangi .IntelliJIdea2018.2edilecek .IntelliJIdea2018.2_oldtaze yeni taşınabilir sürüm olarak kullanmaya başlamak için daha sonra zip dosyası intellij yeniden ekstre Bahar ile (Bu sürüm 2018/02/01 olan) Birden çok ayrılmış modülün (tek ebeveyn pom.xml ile bağlantılı olmayan) önyükleme uygulaması, her biri kendi pom.xml ve voila ile ilkbahar önyükleme uygulamasıdır !!! Spring boot panosundan geçmeden önce tüm çalışmalar, hedef klasör oluşturuldu, derlendi.
Anddo

1

Benim için - yukarıdaki seçeneklerden birkaçını denedim, işe yaramadı. Sonra Uygulama sınıfımı yeniden adlandırdım ve bu muhtemelen intelliJ'i yeni bir jar oluşturmaya zorladı ve hata mesajı değişmeye başladı. Sonra yeniden adlandırdım ve işe yaradı.


1

Dizini kaynak dizin olarak işaretleyin. Ctrl + Shift + Alt + S ile açılır

görüntü açıklamasını buraya girin


Yinelenen yanıt.
Jay Sullivan

1

Burada önerilen tüm hack'leri denedim - boşuna. Sonunda yeni bir Maven uygulaması oluşturdum ve ona elle teker teker kopyaladım - pom.xml ve java dosyaları ve kaynakları. Şimdi hepsi çalışıyor. IntelliJ'de yeniyim ve tamamen etkilenmedim, ancak onu kararsız bir duruma sokmak ne kadar kolay.


İntellij'i kapatmanız, .idea klasörünü (muhtemelen gizli bir dosya) silmeniz gerekir; daha sonra intellij'de klasörü tekrar açın - maven / grade yapılandırmasına dayalı olarak intelli projesini yeniden başlatacaktır.
Jeremy

1

görüntü açıklamasını buraya girin

module.xml yanlış içeriğe sahipse, IDEA'mın neyin önemli olduğunu bilmiyorum.


1

Başka yerlerden bir grup .JAVA dosyası miras aldım ve bunların herhangi bir IDE'de nasıl çalıştırılacağını bulamadım. Sonunda Main.JAVA dosyasının bulunduğu ve çalıştırılan komut satırına gitmem gerekti javac Main.java. Bu, bir sürü .CLASS dosyası oluşturdu. IDE'ler daha sonra ne yapacaklarını bulabildiler.


1

Scala / SBT kullanırken bu hatayı aldım . IntelliJ, her şey doğru bir şekilde kurulmasına rağmen ana sınıfı bulamadı. <user>/.sbt/<version>/plugins/targetÇözümüm : klasörü silin , ardından IntelliJ'i yeniden başlatın.


1

IntelliJ'i Spring ile kullanıyorum ve ana sınıfım bir JAR'a sarılı. Çalıştır / Hata Ayıklama yapılandırma iletişim kutusunda "Bağımlılıkları" Sağlanan "kapsamla dahil et" seçeneğini işaretlemek zorunda kaldım


1

Dosya / Proje Yapısındayız .. Cevap şöyle olabilir:

"İçerik kökü" olarak belirtilen klasör, kodun bulunduğu bir alt klasöre ihtiyaç duyar. Ayrıca, kodu hariç tutup değil olarak işaretleyen düğmeyi bulun. Hangi aşamada ve ne olduğunu söylemeden dışlanan durumları belirten onay kutusuyla karıştırılmamalıdır ** Derleyici dışlıyor mu yoksa çalışma zamanı hariç mi? Test etmeye ve partiye mahkumsunuz. Yani o onay kutusu değil, simgeler ve renkler.

Bir fikir olarak, başlangıçta nasıl çalıştığı düşünüldüğünü çözmemiz gerekiyor. Hiçbir zaman ilk etapta çalışmasını sağlayamadılar ve erken kodakülasyon tarzında bir şeyler eklemeye başladılar. Çok uzun yıllar oldu ve herhangi bir gelişme bekleyemezsiniz. Ama çare olarak, her seferinde doğru bir şekilde elde etmenin bir yolunu bulabiliriz.


1

Burada kontrol edebileceğiniz başka bir şey de JVM'ye aktarılan gerçek komuttur ve düzgün göründüğünden emin olun. Çalıştır konsolunuzun üst kısmına gidin, ilk satır olmalıdır.

Çalıştırma Yapılandırması Sanal Makine Seçenekleri alanınızdaki boşluklar , uygulama başlatma komutunu bozar ve bu hata mesajına neden olabilir

-DsomeArgument="arg with space must be quoted"

0

Brad Turek'in çözümünün detaylandırılması ... Varsayılan IntelliJ Java proje şablonlarından biri, sınıf Main ve main () yöntem giriş noktasını tanımlayan Main adlı bir dosya bekliyor . Yöntem başka bir dosyada (ve sınıfta) bulunuyorsa, Çalıştır yapılandırmasını değiştirin :

Yapılandırma Penceresini Çalıştır

  1. Proje IntelliJ'de açıkken, yapı yapılandırma penceresini açmak için Çalıştır: Yapılandırmaları Düzenle ... menüsünü kullanın.
  2. Main sınıfı girişi , main () giriş yöntemini açığa çıkaran sınıfı içeren dosyanızın adını listelemiyorsa , doğru dosya adını girin. (Görüntüdeki yapılandırma yanlıştır, bu nedenle yapılandırma panelinde kırmızıdır.)
  3. Benim ana () giriş yöntemim ScrabbleTest sınıfında (ve dosyasında) . Yani değişen Ana sınıfı: için ScrabbleTest çalışma zamanı hatası düzeltir.

Başkalarının da belirttiği gibi , yeni yapılandırmayı kullanarak Yeniden Oluşturmanız gerekir . Bir paket kullanıyorum, ancak bu IME'de bir fark yaratmıyor gibi görünüyor. Bu yardımcı olur umarım.


0

Benim durumumda, modülün build.gradle'ında mainClassName ataması tam olarak nitelenmiş sınıf adını belirtmelidir, yani. ana sınıfın kaynak kodu dosyasında paket adı olarak belirtildiği gibi.


0

Sadece projeyi yeniden oluşturun (CTRL + F9) ve uygun şekilde ayarlanmış bir Ana sınıfınız ve modülü (varsa) varsa iki kez kontrol edin (Konfigürasyonları Düzenle)


0

Basit çözüm, projenin kök klasörünün bulunduğu komut satırında yedeklenen klasöre gitmektir. Makinenize SBT'nin kurulu olması gerekir.

Eğer sbt'yi kurduysanız, lütfen "sbt paketi" komutunu çalıştırın, bu başarılı olursa projeyi yeniden derleyecektir, çalışacağı istihbarata geri dönün.


SO'ya hoş geldiniz! Bir cevaba cevap verdiğinizde, doğruysa eve biraz açıklamaya çalışın.
David García Bodego

0

Benim durumumda, yapılandırılmış (nispeten) uzun vm argümanlarım vardı. Bu bağımsız değişkenleri (mümkün olduğunda) ortam değişkenlerine dönüştürmek sorunu benim için çözdü


Bağımsız değişkenlerin başına "tırnak" koymazsanız sanal
Evet

0

Benim durumumda, kod başlangıçta proje altında / src dizini altındayken uygulama iyi çalışıyor. Daha sonra / src'den sonra / main / java dizinini ekledim, ardından "Ana sınıf bulunamadı veya yüklenemedi ..." hatası oluştu. O zaman /src/main/java/YourMain.java'yı çalıştırma yapılandırmasına ekleyemezdiniz. Yaptığım şey, çalıştırma yapılandırmasını kaldırmak, ardından proje-> Modül Ayarlarını Aç (veya Proje paneline tıkladıktan sonra F4) -> Proje Ayarları-> Modüller eski İçerik Kökü'nü sil (x) ve + İçerik Kökü Ekle'yi sağ tıklamaktı. / src / main / java'yı seçin. Projeyi yeniden oluşturun ve çalışır.


0

Muhtemelen yanlış bir paket belirtmiş olurdunuz ve paket hiyerarşisi doğru olmazdı. Aşağı bak

görüntü açıklamasını buraya girin

Fikir, bu durumda yanlış yolu vurgulayacaktır.


0

Benim durumumda, bir maven projesi, I Reimported maven (sağ tıklayıp pom.xml dosyası ve tıklama reimport ) hemen çalıştı olduğunu.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.