私はEclipse 3.5.2と今日のScala/update-currentからのプラグインをインストールしました(Scala 2.8 finalです。)コンパイルして実行できますScala main()を実装する単一のシングルトンオブジェクトで構成されるプロジェクト。
しかし、プロジェクトにさらにクラスが含まれている場合、「メインクラスが見つかりませんでした」というエラーが表示されます。
私は解決策を探してみましたが、発見しました:
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
}
}
しかし、HelloFrameの定義をHello内にネストすると、機能します。このスニペットは完全に実行されます。
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
}
}
私にとっての問題は、コンパイルを妨げるビルドエラー([問題]タブを参照)があったことです。おっとっと!このエラーが表示される理由は、コンパイルマクロが失敗しても実行マクロが続行し、そこにあると予想されるクラスファイルを実行しようとするためです。コンパイルを妨げるビルドエラーが発生したため、これらは存在しません。そのため、Main(コンパイルされていない)が見つからないと表示されています。
ビルドが正常に完了する、つまりエラーが修正されると、問題はなくなります。
理論的には、「問題」に記載されていない、ビルドが正常に完了しないより複雑な理由があると思います。
1つの可能性は、ctrl-F11を使用して起動しようとしているが、別のクラスから起動していることです。
Scala EclipseプラグインはJava起動のデフォルトに従いません。環境設定->実行/デバッグ->起動には、いくつかのオプション起動操作->があります。常に以前に選択したアプリケーションなどを起動します。これは現在、Scala Eclipseプラグインでは機能しません。指定したメインを起動するには、クラスのエディターから起動する必要があります。
このためにバグが発生しました。 http://scala-ide.assembla.com/spaces/scala-ide/tickets/1000023-scala-launch--does-not-follow-jdt-behaviour
編集:これは(ほとんど)修正されました。
私にとっては、Eclipse固有の問題でした。きがついた .class
ファイルがまったく作成されませんでした。したがって、bin
ディレクトリにはコンパイルされたクラスがありません。 * .sbtを使用して* .scalaファイルを手動でコンパイルし、bin
ディレクトリにコピーすると、期待どおりに機能していました。私はさまざまなヒントやトリックを試しましたが、私はreinstalled Scala plugin in Eclipseになるまで機能しませんでした。
次の自動ビルドで「Project-> Clean ..」を実行して同様の問題を解決します。
私はJava自分で作成したアプリケーションで同じエラーメッセージを受け取りました。
問題は、(Eclipse内ではありますが)Javaビルドパスに属しているjarを、Javaビルドパス(プロジェクトの[プロパティ]ウィンドウ)から削除せずに]削除したことです。 。私がそれをしたとき、クラスは再びコンパイルして実行することができました。
Intellijを使用している場合は、ディレクトリをソースルートとしてマークします
Scala-ide.logを確認してください
私にとっての問題は、エラーが発生したことでした:
AppData\Local\Temp\sbt_10d322fb\xsbt\ClassName.scala:16:error:not found:value EnteringPhase EnteringPhase(currentRun.flattenPhase.next){s fullName separator}
適切なビルドツールのセットアップはありますか? sbtのようにインストールしましたか?
$ sbt --versionでバージョンを確認できます
セットアップされていない場合は、ここからダウンロードできます http://www.scala-sbt.org/download.html
インストール後にEclipseを再起動する必要がある場合があります。
.class
ファイルが存在し、通常はbin
ディレクトリの下にあります。
特に、同じプロジェクトの無関係なファイルにエラーがある場合、コンパイルは失敗し、.class
ファイルが作成されます。
私はこの問題に直面しました。 scala class、同じコードを記述し、Buildを "Build Automatically"に設定します。最後に、完全に正常に動作します。
XXX.scalaファイルのコードをコピーするだけです。パッケージを削除して新しいScala Classを作成します。XXX.scalaコードを貼り付けます(Mavenを使用している場合は、Mavenをクリーンアップしてビルドします)。構成を再度実行します。これは私にとってはうまくいきます。
エラーを含むプロジェクトがアプリケーションのビルドパスに追加され、コンパイルが正常に完了しない場合があります。アプリケーションを実行する前に、そのようなプロジェクトをビルドパスから削除してください。
これらのプロジェクトを削除すると、問題が解決しました。