24

Eclipse 3.5.2 と今日の Scala プラグインを /update-current からインストールしました (これが Scala 2.8 final です)。main() を実装する単一のシングルトン オブジェクトで構成される Scala プロジェクトをコンパイルして実行できます。

しかし、プロジェクトに複数のクラスが含まれていると、「メイン クラスが見つかりませんでした」というエラーが表示されます。

解決策を探してみたところ、次のことがわかりました。

Eclipse は Main クラスではなく Main$ クラスを正しく探してい
ます * Debug Configurations の下で、私のメイン クラスは mypackage.Main として正しく識別され
ます * 私のプラグインは最新であり、私のバージョンの Eclipse に推奨されます
* クリーニング、再起動などは行われません助けません。

同じプロジェクトが scalac でコンパイルされます。

これを解決する方法についてのアイデアをありがとう。

編集:MatthieuF は、コードを投稿する必要があることを提案しました。

このスニペットはエラーを生成します。これは最も慣用的なコードではありませんが、環境をテストするためにそのように記述しました。単一のファイルと個別のファイルとして試しました。それはscalacで動作します。

import swing._

class HelloFrame extends Frame {
        title = "First program"
        contents = new Label("Hello, world!")
}

object Hello {
  val frame = new HelloFrame    
  def main(args : Array[String]) : Unit = {
        frame.visible = true
   }
}

しかし、Hello 内に HelloFrame の定義をネストすると、機能します。このスニペットは完全に実行されます:

import swing._

object Hello {

    class HelloFrame extends Frame {
        title = "First program"
        contents = new Label("Hello, world!")
    }

    val frame = new HelloFrame

    def main(args : Array[String]) : Unit = {
        frame.visible = true
    }
}
4

12 に答える 12

21

私にとっての問題は、コンパイルを妨げていたビルド エラー (「問題」タブを参照) があったことでした。おっとっと!エラーが表示される理由は、コンパイル手順が失敗したにもかかわらず run マクロが続行され、そこにあると予想されるクラス ファイルを実行しようとするためです。コンパイルを妨げるビルドエラーが発生したため、それらは存在しないため、メインが見つからない(コンパイルされていない)と表示されます。

ビルドが正常に完了すると、問題はなくなります。つまり、エラーが修正されます。

理論的には、問題にリストされていない、ビルドが正常に完了しないより複雑な理由があると思います。

于 2011-07-01T21:08:48.437 に答える
5

1 つの可能性は、ctrl-F11 を使用して起動しようとしているが、別のクラスから起動しようとしているということです。

Scala Eclipse プラグインは、Java 起動のデフォルトに従いません。Preferences->Run/Debug->Launching には、いくつかのオプション Launch Operation->Always Launch the previous selected application などがあります。これは現在、Scala Eclipse プラグインでは機能しません。指定したメインを起動するには、クラスのエディターから起動する必要があります。

このためにバグが発生しました。http://scala-ide.assembla.com/spaces/scala-ide/tickets/1000023-scala-launch--does-not-follow-jdt-behaviour

編集: これは現在 (ほとんど) 修正されています。

于 2010-10-17T14:28:24.423 に答える
2

次の自動ビルドで「Project->Clean ..」を実行することで、同様の問題を解決できます。

于 2015-03-02T07:22:05.853 に答える
1

自分で作成したJavaアプリケーションでも同じエラーメッセージが表示されました。

問題は、Javaビルドパス(プロジェクトの[プロパティ]ウィンドウ)から削除せずに、 Javaビルドパスに属するjarを(Eclipse内で)削除したことでした。私がそれをしたとき、クラスはコンパイルして再び実行することができました。

于 2011-05-13T09:45:06.057 に答える
0

ファイルが存在することを確認します。.class通常はbinディレクトリの下にあります。

特に、同じプロジェクト内の無関係なファイルにエラーがある場合、コンパイルが失敗し、.classファイルが生成されない可能性があります。

于 2010-10-17T17:02:00.547 に答える
0

XXX.scala ファイル コードをコピーするだけです。パッケージを削除し、新しい Scala クラスを作成します。XXX.scala コードを貼り付けます。(maven を使用している場合は、maven のクリーンとビルドを実行します。) 構成を再度実行します。これは私にとってはうまくいきます。

于 2016-10-17T19:27:47.830 に答える
0

私はこの問題に直面しました。パッケージ名を削除し、scala クラスを作成し、同じコードを記述し、ビルドを「自動的にビルド」に設定しました。最後に、完全に正常に動作します。

于 2016-10-31T02:14:22.113 に答える