El editor no contiene un tipo principal

92

Simplemente revisando el código de muestra de Scala en el sitio web de Scala, pero encontré un error molesto al intentar ejecutarlo.

Aquí está el código: http://www.scala-lang.org/node/45 . Al ejecutarlo en Eclipse, recibí este mensaje 'El editor no contiene un tipo principal' que evita que se ejecute.

¿Hay algo que deba hacer ... es decir, dividir ese archivo en varios archivos, o qué?

Helen Neely
fuente

Respuestas:

37

Tengo mucho este problema con Eclipse y Scala. Ayuda si limpia su espacio de trabajo y reconstruye su proyecto.

Sometimes Eclipse doesn't recognize correctly which files it has to recompile :(

Edit: The Code runs fine in Eclipse

nuriaion
fuente
4
Made the same experience. Plus closing and opening the project seemed to be required for me sometimes.
Fabian Steeg
Thanks @nuriaion and @Fabian, yes, reopening the project got it working. Thanks again for your tips.
Helen Neely
3
@Helen In Eclipse => Project => Clean you can clean the projects, the rebuild will run automaticaly... So you don't have to close and reopen the project.
nuriaion
opening and closing the scala project gave me: Errors occurred during the build. Error instantiating builder 'ch.epfl.lamp.sdt.core.scalabuilder'. Plug-in "ch.epfl.lamp.sdt.core" was unable to instantiate class "scala.tools.eclipse.Builder". Could not initialize class scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder Plug-in "ch.epfl.lamp.sdt.core" was unable to instantiate class "scala.tools.eclipse.Builder". Could not initialize class scala.tools.eclipse.contribution.weaving.jdt.builderoptions.ScalaJavaBuilder
Ustaman Sangat
87

En Eclipse, asegúrese de agregar su carpeta fuente en las propiedades del proyecto -> ruta de compilación java -> fuente. De lo contrario, es posible que la función main () no se incluya en su proyecto.

milkplus
fuente
Tenga en cuenta que esto también se puede lograr arrastrando y soltando los archivos en "src" en la vista del explorador de carpetas.
Max von Hippel
Esto resolvió mi problema, pero después de cerrar y abrir el proyecto.
Dice el
26

You have to make sure that your .java files are in the .src folder in eclipse. I had the same exact problem until I got it figured out.

ultra99
fuente
26

A simpler way is to close the project and reopen it.

static
fuente
21

Just make sure that the folder you work in is added to the built path:

right-click your folder --> build Path --> Use as source Folder

and it should now find main therein.

kholofelo Maloma
fuente
6

Yo tuve el mismo problema. Probé todo tipo de cosas. Y llegué a saber que

  1. Mis archivos .java no estaban vinculados y
  2. no se colocaron en la carpeta 'src'.

Cosas que hice:

Propiedades del proyecto >> Ruta de compilación de Java >> Fuente

  • Se eliminó la carpeta 'src' original que estaba vacía usando la opción 'Eliminar'
  • Agregué la fuente que contenía mis archivos .java de origen usando la opción 'Agregar carpeta'

Esto solucionó el error.

Anand Dhole
fuente
5

Puede intentar ejecutar la función principal desde la barra lateral de contorno de eclipse.

solution

Fei
fuente
Cuando hago esto, me dieron un mensaje de error: <project root> [in Tut_RMI] does not exit. (El nombre del proyecto es Tut_RMI) ¿Este nombre de proyecto no es válido?
Casper
5
***

Solo cierra y vuelve a abrir

*** tu proyecto en eclipse. A veces surgen problemas de vinculación. Esto resolvió mi problema

Mohit Singh
fuente
3

Una solucion rapida:

Primero, excluya el paquete: haga clic con el botón derecho en el paquete de origen >> Ruta de compilación >> Excluir

Luego, inclúyalo de nuevo: haga clic con el botón derecho en el paquete fuente >> Ruta de compilación >> Incluir

rwc
fuente
3

Lo que debe hacer es crear un proyecto Java, pero asegúrese de poner este archivo en el archivo del paquete de ese proyecto, de lo contrario encontrará el mismo error.

enter image description here

AbsentaJeringa
fuente
2

Ese código es válido. ¿Ha intentado compilarlo manualmente usando scalac? Además, ¿ha llamado a su archivo "libreta de direcciones", todo en minúsculas, como el nombre del objeto?

Además, encontré que Eclipse, por alguna razón, configuró la clase principal como ".addressbook" en lugar de "addressbook".

Daniel C. Sobral
fuente
Gracias Daniel, sí, el archivo se llama 'libreta de direcciones' todo en minúsculas. Intentaré reabrir el proyecto para ver si eso ayuda.
Helen Neely
2

deberías crear tu archivo por

selecting on right side you will find your file name,

under that will find src folder their you right click select -->class option

their your file should be created

vijaya
fuente
2

Make sure that your .java file is present either in the str package, or in some other package. If the java file with the main function is outside all packages, this error is thrown.

Sahil Pruthi
fuente
2

He enfrentado un problema similar, lo resolví haciendo clic con el botón derecho en el método principal en la vista de esquema y ejecutándolo como una aplicación Java.

Naresh
fuente
1

Yo también tuve este problema. La solución es asegurarse de que eclipse haya creado el proyecto como proyecto Java. Simplemente cree un nuevo proyecto Java y copie su clase en la carpeta src (e importe las dependencias eventuales). Esto debería solucionar el problema.

KullDox
fuente
Gracias KullDox, por tu comentario. Hace mucho que resolví el problema, pero espero que alguien más encuentre útiles las soluciones aquí.
Helen Neely
1

La respuesta correcta es: la biblioteca Scala necesita antes que la biblioteca JRE en la ruta de compilación.

Vaya a Java Buildpath> Ordenar y exportar y mueva la biblioteca Scala a la parte superior

MGM
fuente
1

Tuve este problema con un proyecto de Java que importé del sistema de archivos (en Eclipse Helios). Aquí hay una pista: el código src no parecía estar compilado en absoluto, ya que no apareció ningún directorio "bin".

Tuve que crear un proyecto Java desde cero (usando el asistente), luego comparar los .projectarchivos de los proyectos que no funcionan y los que funcionan.

El proyecto que da "Editor no contiene un tipo principal" tenía esto como "buildSpec" en el archivo .project:

<buildSpec>
</buildSpec>

Pero el proyecto de trabajo tenía esto como "buildSpec":

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

Copié esto y el proyecto importado funcionó.

Sé que mi respuesta es para Java, pero lo mismo podría ser el problema para su proyecto Scala.

usuario2704136
fuente
1

Puede ser que el archivo que ha creado esté fuera de la carpeta src (fuente). Intentar llamar al objeto de clase (desde el archivo ubicado en la carpeta src) desde el archivo .java fuera de la carpeta de origen da como resultado el mismo error. Copie el archivo .java en la carpeta de origen y luego compílelo. El error desaparecerá.

Vamsi Tallapudi
fuente
1

Yo tuve el mismo problema. Tenía la clase principal fuera del paquete src, en otra carpeta. Lo muevo y corrijo la carpeta y lo resolví

jacruz
fuente
1

ejecute "eclipse -clean -refresh" desde la línea de comandos. Esto me solucionó el problema cuando todas las demás soluciones fallaron.

MikeG
fuente
1

Este podría ser el problema con la ruta de compilación de Java. Pruebe los siguientes pasos:

  1. Ir a propiedades del proyecto
  2. Ir a la ruta de compilación de Java
  3. Vaya a la pestaña Fuente y agregue la carpeta src del proyecto

Esto debería resolver el problema.

AalekhG
fuente
1

Si se trata de un proyecto maven, verifique que el archivo java se crea en src / main / java

Si no lo obtiene, cambie la ruta de JRE y cree los archivos java en la estructura de carpetas anterior

ssomu
fuente
0

Para mí, en Eclipse 3.6, este problema ocurre cuando mi método principal no es público. Cause el problema al tener un método principal como este:

static void main(String[] args) 

El dubugger no pudo detectar esto por sí mismo. Estoy bastante sorprendido de que Eclipse haya pasado por alto esto.

djangofan
fuente
0

En el peor de los casos, cree el proyecto una vez más con todas las importaciones desde el principio. En mi caso, ninguna de las otras opciones funcionó. Este tipo de error sugiere que hay un error en la configuración del proyecto. Una vez logré resolverlo, pero una vez que se realizaron más desarrollos, el error volvió. Recrear todo desde el principio me ayudó a comprender y optimizar algunos enlaces, y ahora estoy seguro de que funciona correctamente.

Sergiu
fuente
0

Siga los pasos siguientes:

  1. Haga una copia de seguridad de todos sus archivos .java en alguna otra ubicación
  2. eliminar todo el proyecto java
  3. Create new java project by right click on root & click new
  4. restore all the files to new location !!
Mani Kandan
fuente
0

File >> Import >> Existing Projects into Workspace >> Select Archive Filed >> Browse and locate file >> Finish. If its already imported some other way delete it and try it that way. I was having the same problem until i tried that.

Mike
fuente
0

One more thing to check: make sure that your source file contains the correct package declaration corresponding to the subdirectory it's in. The error mentioned by the OP can be seen when trying to run a "main type" declared in a file in a subdirectory but missing the package statement.

Daniel Ashton
fuente
0

I have this problem too after I changed the source folder. The solution that worked for is just editing the file and save it.

Hunsu
fuente
0

Try 'Update Project'. Once I did this, The Run as Java Application option appeared.

George Santhosh
fuente
0

In my particular 'Hello World' case the cause for this problem was the fact, that my main() method was inside the Scala class.

I put the main() method under the Scala object and the error disappeared.

That is because Scala object in Java terms is the entity with only static members and methods inside.

That is why Java's public static void main() in Scala must be placed under object.

(Scala class may not contain static's inside)

Vlad.Bachurin
fuente