エラー:intelliJ IDEでメインクラスを検索またはロードできませんでした


151

私はJavaの初心者で、JDK 1.7でIDEとしてインストールしたIntelliJを使用してコードを実行しようとしています。次のコードは、コンパイルさえせず、エラーを出し続けます。

Error: Could not find or load main class libTest

コード

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

コンパイラー設定で変更する必要があるものはありますか?またはそれはコードです。


2
ソースファイルの名前は何ですか?ですよlibTest.javaね?
QuantumMechanic 2012年

import java.lang...これは、langパッケージ内のクラスに対して自動的に行われます。
Andrew Thompson、

QuantumMechanicで述べたように、メインクラスは、それとまったく同じ名前のファイル内にある必要があります。そのため、libTestはlibTest.javaという名前のJavaファイルに含まれている必要があります。そうでない場合、Javaコンパイラーは文句を言うでしょう。また、IDEAを介してソースを作成しましたか、それとも既存のソースの上に新しいIDEAプロジェクトを作成しましたか?
マクフィニガン

java.langのインポートを試みても違いはありませんでした
混乱したメールマン'18年

それらは同一です。このようなエラーが報告される理由は他にありますか?
混乱した郵便配達員、

回答:


177

これは役立つかもしれません:

1)「ビルド」メニュー->「Rebuild Project」。Intellijは、クラスが既に存在するためにクラスを書き換えない場合があります。このようにして、Intellijにすべてを書き換えるように依頼します。

2)「実行」メニュー->「Edit configuration」->プロファイルの削除->プロファイル(Javaアプリケーションの場合は「アプリケーション」)を追加し直し、「メインクラス」ドロップダウンメニューからメインクラスを選択します。

3)「ビルド」メニュー->「Rebuild Project」。


9
IntelliJでまったく新しいプロジェクトがあり、実行されませんでした。Rebuild Project私のために働いた!
ダニーハーディング

2番目のオプションは私のために働いた。しかし、構成プロファイルを削除してから、クラスを右クリックします-> run
NoName

2
"Build" menu -> "Rebuild Project-仕事をした!ありがとう
Yan Khonski、2018

1
最初のオプションrebuild projectは私の問題に役立ちました。ありがとうございました!
khwilo

1
.idea、.mvn、その他のターゲットディレクトリを削除してから、IntelliJを再起動しました。イベントログに移動し、プロジェクトをMavenプロジェクトとして追加し、@ Kishoreがここで説明した手順に従いました。それは現在働いています。
Sunny Shekhar、

105

上記の回答のいずれもうまくいかなかった場合は、intelliJ IDEを閉じて、プロジェクトのルートからintelliJ IDEファイルとフォルダーを削除します。

rm -rf .idea *.iml 

次に、intelliJでプロジェクトを開きます。今はうまくいくはずです。


1
これでうまくいきました。私はまた、IntelliJのに私のプロジェクトを再インポートが、「グループモジュール」オプションのため、私は「修飾名を使用して」(代わりの「明示的なモジュール群を使用して、」使用。
markhops

3
.ideaフォルダを削除すると、JetBrainsのIDEに関するすべての問題が常に解決されます:)
shelll

これは私にとってもうまくいきました。私はIntellijの大ファンですが、彼らは簡単なことも学ぶ必要があります。
Zwakele Mgabhi

30分以上の無駄。最後にこれは私が物事を機能させるためにしなければならなかったものです
vins

このページのこの方法のみが機能します。
zionpi

81

私にとっての解決策は、プロジェクト設定で出力ディレクトリを修正することでした。以前は、プロジェクトコンパイラの出力に「ターゲット」のみを使用していました。代わりに、フルパス(例:D:\ dev \ sigplusjava2_68 \ target)を持つように更新しました ここに画像の説明を入力してください


10
それは私を助けませんでした
Pavel

ここでの私の解決策は実際には以下の@Ehsanの答えの微妙なバリエーションである可能性があります。おそらく、ターゲットディレクトリを指定することにより、aと同じ作業を実行するすべてのオブジェクトをコンパイルするための新しい場所が与えられますRebuild Project
イロおじさん2018

1
@UncleIroh同じ作業を行った場合は、再構築+構成の読み取り。最初は問題を修正していたでしょう。それはしませんでしたが、あなたの解決策はしました。
hyperum 2018年

これは受け入れられる答えになるはずです。いつも再び私を悩ませます..:p
クリストファー株式

37

私はこの問題を抱えていて、このサイトで考えられるすべてのことを太陽の下で試しました。

リモートブランチからプルした後、Javaクラスはどれも取得されませんでした。プロジェクト階層では、すべてのクラスの名前に赤のJがあり、青のCはありませんでした。

最後に、私はこのチュートリアルを試してみて、いくつかの手順を説明していないものを試し、問題を修正しました: https //www.jetbrains.com/help/idea/creating-and-managing-modules.html

これが私がしたことです:

  1. Gotoファイル| プロジェクト構造、またはCrtl + Shift + Alt + Sを押す
  2. 「プロジェクト設定」セクションで「モジュール」を選択します。
  3. [ソース]タブで、[マーク:]行の[ソース]をクリックします。
  4. 「適用」ボタンをクリックします。

何らかの理由で、私のクラスはすべて青いCでした。

IntelliJやIDEが現象をどのように説明できるかをよく理解している人がいますが、私が知っているのは、すべてのクラス、さらに重要なのはメインのクラスを表示して実行できることです。


これは、Intellijを閉じ、.ideaフォルダーを削除してからIntellijを再度開いて、上記の手順を実行した後にのみ機能しました。
Shell_Leko

14

outフォルダーを明示的に作成してから、出力パスをC:\Users\USERNAME\IdeaProjects\PROJECTNAME\out

このような

ちょうどときに私のために機能するように見え、outIntelliJがフォルダを作成することを期待しません。


また、IntelliJで新しい実行構成を作成してみます。

クリックして前のものを見つける

![設定を編集

それを削除します

ここに画像の説明を入力してください

そして大丈夫。

次に、(重要なステップ)メインメソッドを含むクラスを開きます。これは、左側のプロジェクトペインでクラス名をクリックすることでおそらく最も簡単になります。

erにAlt+ Shift+ F10を与えると、

この

今ヒットEnter!!

多田? (うまくいきましたか?)


特にmain()関数をclass Main他のクラスに移動した場合は、実行構成が機能します。その場合は、上記のように実行構成を編集し、「メインクラス」の値をクラス名(完全修飾)に変更します。
掲示板

「設定の編集」オプションしかないのですが、機能しません(
Ver Nick

14

キャッシュを無効にして、intellijを再起動してください。 添付の図に示すようにファイルに移動します


7

私はこれが少し前に尋ねられたことを知っていますが、私はこの問題につまずいて、私の発見が他の人を助けるかもしれないと思っていました。指摘したように、エラーメッセージは基本的にoutフォルダーの結果です。これは、プログラムを実行しようとすると、コードが最初にコンパイルされ、コンパイルされた結果がoutの場所に配置され、次にコンパイルされたコードがoutの場所から読み込まれるためです。コンパイルされたコードが予期した場所にない場合は、エラーが発生します。

私が特に共有したい点は、実行構成が構成パネルの「起動前」セクションで「ビルド」を指定している場合でも、コードがコンパイル(ビルド)されないことがあります。

これはいつ起こりますか?これを引き起こす可能性のある状況の1つは、モジュールを使用していて、モジュール出力ディレクトリを手動で削除した場合です。たとえば、「foo」という名前のモジュールがある場合、out / productionの下にfooという名前のディレクトリがあるはずです。手動で削除した場合、ビルドシステムは再構築が必要であることを認識しない場合があります。

さらに悪いことに、[ビルド]を選択した場合| モジュール「foo」をビルドしますが、モジュールを再ビルドしない可能性があります。その場合は、モジュール内のファイル(例: 'bar.java')を選択してから、[ビルド] | [ビルド]を選択してください。「bar.java」を再コンパイルします。これで、出力ディレクトリout / production / fooが復元されます。

IntelliJは通常、進行中の変更を認識しているので、これは私を驚かせ、理解するのに少し時間がかかったので、共有したいと思いました。


6

クラスモジュールを確認してください:intellijでこの問題が発生しました:Mavenマルチモジュールプロジェクトがあります。問題は、構成内にモジュールが存在しないクラスを実行しているため、正しいモジュールを設定することで問題が修正されます( "構成の編集"-> "モジュールのクラスを使用")

これはあなたを助けるかもしれません


私も働いた。ありがとう!IntelliJまたはScalaプラグインのアップグレードをインストールするときに、おそらく何かがうまくいかなかった。その後、この奇妙な問題が発生します。非常に迷惑で時間がかかる。うまくいけば、JetBrainsが解決策を見つけます。
アンドレ・バンデルフト

6

「src」フォルダを「ソース」としてマークする必要がありました。IntelliJを再起動してプロジェクトを再構築した後、問題なくプロジェクトを実行できました(スクリーンショットを参照)。編集:「プロジェクト構造」タブには、ファイル->プロジェクト構造から、またはCtrl + Shift + Alt + Sを押してアクセスできます。


1
(私のように)「ソース」タブがない場合は、新しいモジュールを追加し(緑色の+をクリック)、メインフォルダーをソースとして選択する必要があります。何も上書きされず、srcフォルダーが青色に変わります。
john ktejik 2018

5

[モジュール]タブを開きます(Ctrl + Shift + Alt + Sを押します)。1つのプロジェクトに2つのモジュールがありました。2番目の冗長モジュールを削除した後、問題を解決しました(スクリーンショットを参照)。ここに画像の説明を入力してください


4

クラスがデフォルトのフォルダーにあるとき、つまりクラスがパッケージを宣言していないとき、私はそのような問題に直面しました。

したがってpackage org.me.mypackage;、クラスのトップでパッケージステートメント(例:)を使用すると修正されると思います。


そのコード行を複製しますか?? ..必要に応じてどのように変更しますか?
混乱した郵便配達員、

ただ、このように、あなた自身のパッケージ名を使用しますpackage org.confused.mailman;
ハカンSerceで

まあ、packageステートメントは、IDEがファイルを配置した場所と一致する必要があります。IDEがファイルをsourceBase /に配置しなかった場合、org/confused/mailmanそのパッケージ行を追加しても役に立ちません。
QuantumMechanic 2012年

IDEがこれをガイドし、推奨される修正が選択されている場合は自動的に修正すると思います。
Hakan Serce

助けにならない:/ .. IDEは、私が行った変更のいずれにも悩まされていないようです。上記のエラーがスローされ、落ち着いてリラックスします
混乱した郵便配達員

3

「ファイル」>「プロジェクト構造」>「モジュール」>「src」フォルダをソースとしてマークします。これで問題が解決します。また、コードを変更したり、構成を変更したりする必要がないように、最新の言語が選択されていることを確認してください。 ここに画像の説明を入力してください


2

私の場合、問題はIntelliJのアップグレードに関連しているようです。これを行ったとき、古いIntelliJのファイルを新しいIntelliJ(2017コミュニティから2018コミュニティ)のファイルで上書きしました。その後、私のプロジェクトはすべて壊れました。私はこのスレッドですべてを試しましたが、どれもうまくいきませんでした。Gradleを最新バージョン(4から4.8)にアップグレードしようとしましたが、うまくいきませんでした。私にとっては、IntelliJフォルダー全体を削除して再インストールするだけでうまくいきました。その後、私のプロジェクトはすべてうまくいきました。


これは実際にそれのようです。私はからのようなメインフォルダ名前を変更したので、私はポータブルのIntelliJを使用idea\binするようにしidea_old\binたフォルダに設定し、名前を変更%user%\usernameしている.IntelliJIdea2018.2ことが.IntelliJIdea2018.2_old新鮮な新しいポータブル版としてそれを使用して起動し、その後zipファイルIntelliJの再抽出を春と(これはバージョン2018年2月1日です)複数の個別のモジュール(単一の親pom.xmlでリンクされていない)のブートアプリは、それぞれ独自のpom.xmlと出来上がりのスプリングブートアプリです!!! スプリングブートダッシュボードを実行する前に、すべての作業、ターゲットフォルダーの作成、コンパイルを行います。
Anddo

2

ディレクトリをソースディレクトリとしてマークします。Ctrl + Shift + Alt + Sで開く

ここに画像の説明を入力してください


1

私にとって-上記のオプションのいくつかを試しましたが、うまくいきませんでした。次に、アプリケーションクラスの名前を変更しただけで、おそらくintelliJが新しいjarをビルドするように強制され、エラーメッセージが変更され始めました。次に、名前を変更して元に戻しました。


1

私はここで提案されたすべてのハックを試しました-無駄です。最後に、新しいMavenアプリケーションを作成し、pom.xmlとJavaファイルおよびリソースを手動で1つずつコピーしました。現在はすべて機能します。私はIntelliJを初めて使用し、まったく感銘を受けていませんが、不安定な状態にするのは簡単です。


intellijを閉じ、.ideaフォルダー(おそらく隠しファイル)を削除する必要があります。次に、フォルダーを再びintellijで開きます-maven / grade構成に基づいてintelliプロジェクトを再初期化します。
ジェレミー


1

他の場所から多数の.JAVAファイルを継承しましたが、それらをどのIDEでも機能させる方法を理解できませんでした。最終的には、Main.JAVAファイルがあるコマンドラインに移動して実行する必要がありましたjavac Main.java。これにより、一連の.CLASSファイルが作成されました。IDEはそれから何をすべきかを理解することができました。


1

Scala / SBTを使用しているときにこのエラーが発生しました。すべてが正しく設定されていても、IntelliJはメインクラスを見つけることができませんでした。私の解決策:<user>/.sbt/<version>/plugins/targetフォルダーを削除してから、IntelliJを再起動します。


1

私はSpringでIntelliJを使用しており、メインクラスはJARでラップされています。実行/デバッグ構成ダイアログで「依存関係を「提供済み」スコープで含める」をマークする必要がありました


1

ファイル/プロジェクト構造にいます。答えは次のようになります。

「コンテンツルート」として示されたフォルダーには、コードがある子フォルダーが必要です。 さらに、コードを除外対象としてマークするボタンとそうでないものをマークするボタンを見つけます。どのフェーズで何を伝えずに除外された状態を示すティックボックスと混同しないでください**コンパイラー除外またはランタイム除外ですか?あなたはテストとくじ引きをする運命にあります。つまり、tickboxではなく、アイコンと色です。

アイデアとして、最初はどのように機能すると考えられていたかをクラックする必要があります。彼らはそれを最初に機能させることは決してせず、時期尚早のコード化スタイルで物事を追加し始めました。何年も経っており、改善は期待できません。しかし、治療法として、毎回正しくするために何らかの方法をハッキングすることができます。


1

ここで確認できるもう1つのことは、JVMに渡される実際のコマンドであり、正常に見えることを確認します。Runコンソールの一番上までスクロールします。最初の行になっているはずです。

[実行構成VMオプション]フィールドにスペースがあると、アプリの起動コマンドが不正になり、このエラーメッセージが表示される可能性があります

-DsomeArgument="arg with space must be quoted"

よろしくお願いします!これは私のために働きました!!
Jcoder

0

Brad Turekのソリューションの詳細...デフォルトのIntelliJ Javaプロジェクトテンプレートの1つは、クラスMainmain()メソッドのエントリポイントを定義するMainと呼ばれるファイルを想定しています。メソッドが別のファイル(およびクラス)に含まれている場合は、実行構成を変更します。

実行構成ウィンドウ

  1. IntelliJでプロジェクトを開いた状態で、「実行:構成の編集...」 メニューを使用してビルド構成ウィンドウを開きます。
  2. Mainクラスのエントリに、main()エントリメソッドを公開するクラスを含むファイルの名前がリストされていない 場合は、正しいファイル名を入力します。(画像の設定が間違っているため、設定パネルで赤色になっています。)
  3. 私のmain()エントリメソッドは、クラス(およびファイル)ScrabbleTestにあります。したがって、メインクラスScrabbleTestに変更すると、ランタイムエラーが修正されます。

他の人が指摘したように、新しい構成を使用して再構築する必要があります。私はパッケージを使用していますが、それはIMEに違いをもたらすようには見えません。お役に立てれば。


0

私の場合、モジュールのbuild.gradleのmainClassName割り当てでは、完全修飾クラス名を指定する必要があります。メインクラスのソースコードファイルでパッケージ名として指定されているとおり。


0

プロジェクトを再ビルド(CTRL + F9)し、メインクラスとモジュール(存在する場合)が適切に設定されているかどうか(構成の編集)を再確認します。


0

簡単な解決策は、コマンドラインでバックアップされたフォルダーに移動することです。マシンにSBTがインストールされている必要があります。

sbtがインストールされている場合は、コマンド「sbt package」を実行してください。これにより、プロジェクトが正常に再コンパイルされ、正常に機能するintelliJに戻ります。


SOへようこそ!答えに答えるときは、それが正しいかどうか前もって、少し説明してみてください。
DavidGarcíaBodego

0

私の場合、(比較的)長いvm引数が構成されていました。これらの引数を(可能な場合は常に)環境変数に変換すると、問題が解決しました


引数の前後に「引用符」を付けない限り、VMオプションにスペースを含めることはできません
Yep

0

私の場合、プロジェクトの/ srcディレクトリの下にコードが最初にあったときに、アプリケーションは適切に実行されます。後で/ srcの後に/ main / javaディレクトリを追加すると、「メインクラスが見つからないかロードできません...」というエラーが発生しました。その時点では、実行構成に/src/main/java/YourMain.javaを追加できませんでした。実行構成を削除してから、プロジェクトを右クリックし、[モジュール設定を開く](または[プロジェクト]パネルをクリックした後、F4)->プロジェクト設定->モジュールを削除(x)古いコンテンツルートと+コンテンツルートを追加、 / src / main / javaを選択します。プロジェクトを再ビルドして実行します。


0

おそらく、間違ったパッケージを指定していて、パッケージ階層が正しくないでしょう。下を見て

ここに画像の説明を入力してください

その場合、IDEは間違ったパスを強調表示します。


0

私の場合、それはMavenプロジェクトです。私はMavenを再インポートしましたpom.xmlファイルを右クリックして[再インポート ]をクリックします)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.