java.lang.NoSuchMethodError: main при запуске HelloWorld с плагином Eclipse Scala - PullRequest
4 голосов
/ 16 июля 2009

Я только что поиграл со Scala и установил плагин Eclipse, как описано в http://www.scala -lang.org / node / 94 , но после ввода примера теста Hello World и настройки до конфигурации запуска, как описано, я получаю следующую ошибку

Exception in thread "main" java.lang.NoSuchMethodError: main

Для справки код

package hello

object HelloWorld extends Application {
  println("Hello World!")
}

Я немного повозился с очевидными решениями (добавление основного метода, добавление одноэлементного объекта основным методом), но я явно что-то делаю не так.

Может кто-нибудь заставить свой тестовый пример работать или указать, что я делаю неправильно?

Ответы [ 11 ]

4 голосов
/ 26 марта 2010

Я также столкнулся с этой ошибкой с кодом ниже:

package hello

class HelloWorld extends Application {
  Console.println("Hello World!")
}

Ошибка использовала class вместо object, когда я переключился на object, он нормально работал в Eclipse.

4 голосов
/ 25 июля 2009

Вчера вечером я столкнулся с той же проблемой. Я исправил это, удалив все существующие конфигурации запуска Scala, а затем (я не шучу) добавив перенос строки перед первой фигурной скобкой.

Еще одна вещь, которую я сделал, это работает, чтобы войти в существующую конфигурацию запуска и добавить немного мусора на вкладку «аргументы». В любом случае я игнорирую аргументы, так что это не повлияло на вывод программы, но у него появился плагин для поиска main снова

2 голосов
/ 23 мая 2011

У меня такая же проблема. Вот как я это исправил: Щелкните правой кнопкой мыши по своему проекту, выберите «Свойства-> Путь сборки Java», вы увидите, что «Папка вывода по умолчанию» - это «ваш проект / bin ». Измените его на «ваш проект / classes », затем очистите и перестройте ваш проект. Несколько жалоб могут все еще появиться, но это пройдет - просто убедитесь, что скомпилированные файлы ".class" сгенерированы в папке "classes"

Я подозреваю, что это как-то связано с базовым механизмом исполнения / конфигурацией Java. Не совсем уверен, потому что я не знаком с Java.

2 голосов
/ 24 июля 2009

Была точно такая же проблема. Решение для меня было таким:

  • Перейти к Run-> Run Configuration
  • Создание новой конфигурации JavaApplication, в которой вручную указывается полное имя класса (например, hello.HelloWorld)
  • Применить и запустить

Так и должно быть.

EDIT

Что касается причины проблемы, IMHO Eclipse ищет исполняемый файл HelloWorld.class. Тем не менее, он должен искать HelloWorld $ .class (или наоборот). Но это предположение может быть неверным ...

2 голосов
/ 20 июля 2009

Это немного некрасиво, но вы можете поместить

package hello

object HelloWorld {
  def main(args:Array[String]) {
    println("Hello World!")
  }
}

внутри файла HelloWordSrc.scala (или что угодно, вместо конечного "Src"), возможно, очистите проект один раз, и тогда Eclipse должен его запустить. «Расширение приложения» никогда не работало для меня внутри Eclipse, но плагин ищет основной метод внутри кода, который по какой-то причине не может иметь того же имени, которое указано именем файла

ура

2 голосов
/ 20 июля 2009

Я решаю проблему путем очистки проекта, затем иду в класс с методом main и собираю его с помощью strg + s (автоматическая сборка). Работает как шарм.

1 голос
/ 18 июля 2009

Netbeans работает ~ хорошо, но также есть проблемы. Сейчас у меня есть хороший Eclipse 3.4 + Scala Plugin 2.7.5 Final, работающий очень хорошо. Я предлагаю вам сделать чистую установку Eclipse 3.4, Scala 2.7.5, очистить ваш проект и т. Д. Вы создали проект с создателем проекта Scala? Т.е. создать новый проект -> проект Scala? Все это, конечно, если у вас больше ничего не работает.

1 голос
/ 16 июля 2009

К сожалению, вы не сделали ничего плохого. Плагин Eclipse в Scala пережил лучшие времена, но он был переписан, чтобы воспользоваться некоторыми недавними функциями, обеспечивающими лучшую интеграцию, и в текущей версии он содержит ошибки.

Сейчас я рекомендую NetBeans. Или ИДЕЯ, если у тебя есть деньги.

1 голос
/ 16 июля 2009

Плагин Scala немного нестабилен. Попробуйте закрыть и снова открыть проект, который обычно помогает.

0 голосов
/ 05 мая 2012

Если вы используете последнюю версию scala (2.9. *), Вы должны использовать

object HelloWorld extends App {
  println("Hello World!")
}

Приложение, а не приложение. Приложение было 2,8 или 2,7 способа. Единственная ли это проблема - другой вопрос.

...