Редактор не содержит основного типа

92

Просто просматриваю образец кода Scala на веб-сайте Scala, но при попытке запустить возникла досадная ошибка.

Вот код: http://www.scala-lang.org/node/45 . Запустив его в Eclipse, я получил сообщение «Редактор не содержит основного типа», что мешает его запуску.

Что мне нужно сделать ... т.е. разбить этот файл на несколько файлов или что?

Хелен Нили
источник

Ответы:

37

У меня часто возникает эта проблема с Eclipse и Scala. Это поможет, если вы очистите свое рабочее пространство и перестроите свой проект.

Иногда Eclipse не распознает правильно, какие файлы нужно перекомпилировать :(

Изменить: код отлично работает в Eclipse

нуриаион
источник
4
Сделал тот же опыт. Плюс ко всему мне иногда требовалось закрытие и открытие проекта.
Fabian Steeg,
Спасибо @nuriaion и @Fabian, да, при повторном открытии проекта все заработало. Еще раз спасибо за советы.
Helen Neely
3
@Helen In Eclipse => Project => Clean, вы можете очистить проекты, перестройка будет выполняться автоматически ... Таким образом, вам не нужно закрывать и повторно открывать проект.
nuriaion
открытие и закрытие проекта scala дало мне: Во время сборки произошли ошибки. Ошибка при создании экземпляра построителя ch.epfl.lamp.sdt.core.scalabuilder. Подключаемому модулю ch.epfl.lamp.sdt.core не удалось создать экземпляр класса scala.tools.eclipse.Builder. Не удалось инициализировать класс scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder. Подключаемому модулю "ch.epfl.lamp.sdt.core" не удалось создать экземпляр класса "scala.tools.eclipse.Builder". Не удалось инициализировать класс scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder
Ustaman
87

В Eclipse убедитесь, что вы добавили исходную папку в свойствах проекта -> путь сборки java -> источник. В противном случае функция main () может не быть включена в ваш проект.

Milkplus
источник
Обратите внимание, что это также можно сделать, перетащив файлы в «src» в представлении проводника папок.
Макс фон Хиппель
Это решило мою проблему, но после закрытия и открытия проекта.
Sayed
26

Вы должны убедиться, что ваши файлы .java находятся в папке .src в eclipse. У меня была такая же проблема, пока я не разобрался с ней.

ультра99
источник
26

Более простой способ - закрыть проект и снова открыть его.

статический
источник
21

Просто убедитесь, что папка, в которой вы работаете, добавлена ​​к построенному пути:

right-clickваша папка -> build Path->Use as source Folder

и теперь он должен mainтам найти .

холофело малома
источник
6

У меня такая же проблема. Я пробовал все что угодно. И я узнал, что

  1. Мои файлы .java не были связаны и
  2. они не помещались в папку src.

Что я сделал:

Свойства проекта >> Путь сборки Java >> Источник

  • Удалил исходную папку 'src', которая была пустой, с помощью опции 'Удалить'
  • Добавлен источник, содержащий мои исходные файлы .java, с помощью параметра «Добавить папку»

Это решило ошибку.

Ананд Дхоле
источник
5

Вы можете попробовать запустить основную функцию из боковой панели контура eclipse.

решение

Фэй
источник
Когда я делаю это, я получил сообщение об ошибке: <project root> [in Tut_RMI] does not exit. (Название проекта Tut_RMI) Недействительно ли это название проекта?
Casper
5
***

Просто закройте и снова откройте

*** ваш проект в затмении. Иногда возникают проблемы с привязкой. Это решило мою проблему

Мохит Сингх
источник
3

Быстрое решение:

Сначала исключите пакет: щелкните правой кнопкой мыши исходный пакет >> Путь сборки >> Исключить.

Затем включите его обратно: щелкните правой кнопкой мыши исходный пакет >> Путь сборки >> Включить

rwc
источник
3

Что вам следует сделать, так это создать проект Java, но убедитесь, что вы поместили этот файл в файл пакета этого проекта, иначе вы столкнетесь с той же ошибкой.

введите описание изображения здесь

АбсентШприц
источник
2

Этот код действителен. Вы пробовали скомпилировать его вручную с помощью scalac? Кроме того, вы назвали свой файл «адресной книгой», используя строчные буквы, например, имя объекта?

Кроме того, я обнаружил, что Eclipse по какой-то причине установил для основного класса значение «.addressbook» вместо «addressbook».

Дэниел С. Собрал
источник
Спасибо, Даниэль, да, файл называется «адресная книга» в нижнем регистре. Попробую повторно открыть проект, чтобы посмотреть, поможет ли это.
Helen Neely
2

вы должны создать свой файл

выбрав справа, вы найдете имя файла,

под этим вы найдете папку src, которую вы щелкните правой кнопкой мыши, выберите -> параметр класса

их ваш файл должен быть создан

Виджая
источник
2

Убедитесь, что ваш файл .java присутствует либо в пакете str, либо в каком-либо другом пакете. Если файл java с основной функцией находится за пределами всех пакетов, возникает эта ошибка.

Сахил Прути
источник
2

Столкнулись с подобной проблемой, решили ее, щелкнув правой кнопкой мыши основной метод в представлении структуры и запустив как приложение Java.

Нареш
источник
1

У меня тоже была эта проблема. Решение состоит в том, чтобы убедиться, что eclipse создал проект как проект Java. Просто создайте новый проект Java и скопируйте свой класс в папку src (и импортируйте возможные зависимости). Это должно решить проблему.

KullDox
источник
Спасибо KullDox за ваш комментарий. Я давно решил проблему, но надеюсь, что кто-то еще найдет решения здесь полезными.
Хелен Нили
1

Правильный ответ: библиотека Scala должна находиться перед библиотекой JRE в пути сборки.

Перейдите в Java Buildpath> Order and Export и переместите библиотеку Scala наверх

MGM
источник
1

У меня была эта проблема с проектом Java, который я импортировал из файловой системы (в Eclipse Helios). Подсказка: похоже, что код src вообще не компилировался, так как не обнаружился каталог bin.

Пришлось создать Java-проект с нуля (с помощью мастера), затем сравнить .projectфайлы неработающего и рабочего проектов.

В проекте с указанием «Редактор не содержит основного типа» это было как «buildSpec» в файле .project:

<buildSpec>
</buildSpec>

Но рабочий проект имел это как "buildSpec":

<buildSpec>
    <buildCommand>
        <name>org.eclipse.jdt.core.javabuilder</name>
        <arguments>
        </arguments>
    </buildCommand>
</buildSpec>

Я скопировал это, и импортированный проект заработал.

Я знаю, что мой ответ касается Java, но то же самое может быть проблемой для вашего проекта Scala.

user2704136
источник
1

Возможно, созданный вами файл находится вне папки src (source). Попытка вызвать объект класса (из файла, расположенного в папке src) из файла .java за пределами исходной папки, приводит к той же ошибке. Скопируйте файл .java в исходную папку, затем создайте его. Ошибка исчезнет.

Вамси Таллапуди
источник
1

У меня такая же проблема. У меня был основной класс из пакета src в другой папке. Я переместил его и исправил папку и решил

Jacruz
источник
1

запустите "eclipse -clean -refresh" из командной строки. Это устранило для меня проблему, когда все другие решения не помогли.

MikeG
источник
1

Это может быть проблема с путем сборки Java. Попробуйте следующие шаги:

  1. Перейти к свойствам проекта
  2. Перейти к пути сборки java
  3. Перейдите на вкладку Source и добавьте папку src проекта

Это должно решить проблему.

АалехГ
источник
1

Если это проект maven, убедитесь, что файл java создан в src / main / java

Если вы не получаете, измените путь JRE и создайте файлы java в указанной выше структуре папок.

ссому
источник
0

Для меня в Eclipse 3.6 эта проблема возникает, когда мой основной метод не является общедоступным. Я вызвал проблему, имея такой основной метод:

static void main(String[] args) 

Дубаггер не смог обнаружить этого самостоятельно. Я очень удивлен, что Eclipse не заметила этого.

Джангофан
источник
0

В худшем случае - создать проект заново со всем импортом с самого начала. В моем случае ни один из других вариантов не работал. Этот тип ошибки намекает на ошибку в настройках проекта. Однажды мне удалось решить эту проблему, но после того, как были сделаны дальнейшие разработки, ошибка вернулась. Воссоздание всего с самого начала помогло мне понять и оптимизировать некоторые ссылки, и теперь я уверен, что они работают правильно.

Серджиу
источник
0

Выполните следующие шаги:

  1. Сделайте резервную копию всех ваших файлов .java в другое место
  2. удалить весь проект Java
  3. Создайте новый проект Java, щелкнув правой кнопкой мыши на корне и щелкнув новый
  4. восстановить все файлы в новом месте !!
Мани Кандан
источник
0

Файл >> Импорт >> Существующие проекты в рабочую область >> Выберите Архивный файл >> Просмотрите и найдите файл >> Готово. Если он уже импортирован другим способом, удалите его и попробуйте. У меня была такая же проблема, пока я не попробовал.

Майк
источник
0

Еще одна вещь, которую нужно проверить: убедитесь, что ваш исходный файл содержит правильное объявление пакета, соответствующее подкаталогу, в котором он находится. Ошибка, упомянутая OP, может быть замечена при попытке запустить «основной тип», объявленный в файле в подкаталоге, но отсутствует инструкция о пакете.

Дэниел Эштон
источник
0

У меня тоже возникла эта проблема после того, как я изменил исходную папку. Решение, которое сработало, - просто отредактировать файл и сохранить его.

Хунсу
источник
0

Попробуйте «Обновить проект». Как только я это сделал, появилась опция «Запуск от имени Java-приложения».

Джордж Сантош
источник
0

В моем конкретном случае «Hello World» причиной этой проблемы было то, что мой main()метод находился внутри Scala class.

Поставил main()метод под Scala objectи ошибка исчезла.

Это потому, что Scala objectв терминах Java - это сущность, внутри которой есть только статические члены и методы.

Вот почему Java public static void main()в Scala нужно поместить вobject .

(Scala classне может содержать статики внутри)

Влад Бачурин
источник