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


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 () может не быть включена в ваш проект.


Обратите внимание, что это также можно сделать, перетащив файлы в «src» в представлении проводника папок.
Макс фон Хиппель

Это решило мою проблему, но после закрытия и открытия проекта.
Sayed

26

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



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

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

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

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


3

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

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


2

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

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


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

2

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

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

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

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


2

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


2

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


1

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


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

1

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

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


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.


1

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


1

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


1

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


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не может содержать статики внутри)

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.