eclipse - "El índice de objetos no es miembro del paquete views.html" al abrir el proyecto de scala play en scala ide
playframework-2.0 (10)
Creé un proyecto de juego con play 2.3.7
En el directorio del proyecto, ejecuté activador y ejecuté el comando eclipse
para generar archivos de proyecto de eclipse.
Cuando voy a eclipse (estoy usando el IDE de Scala de la Id. De compilación de tipo seguro: 4.0.0-vfinal-20150119-1023-Typesafe, hay un error en mi archivo Application.scala:
object index is not a member of package views.html
¿Hay algo mal con mi configuración? La aplicación funciona bien cuando ejecuto run
en el indicador de la consola de activación.
¡Gracias!
EDITAR: código agregado
package controllers
import play.api._
import play.api.mvc._
object Application extends Controller {
def index = Action {
Ok(views.html.index("Your new application is ready."))
}
}
El error está en la línea ''Ok ...''.
Hay un archivo en vistas llamado index.scala.html, y la aplicación ejecuta el archivo cuando lo ejecuto desde el activador.
1) Agregue la siguiente línea a su archivo sbt.build:
EclipseKeys.preTasks := Seq(compile in Compile)
2) Agregue la siguiente línea a su archivo plugins.sbt debajo de la carpeta del proyecto:
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "5.1.0")
3) Ejecuta el comando "eclipse" desde dentro de sbt
como se explica en la documentación del marco de juego:
Agregando target/scala-2.11/twirl/main
que está teniendo el paquete views.html
a la fuente arreglado para mí.
Básicamente, necesitamos una forma de poner las clases compiladas en la ruta para que esto funcione.
Hice lo siguiente para solucionarlo. Dado que los proyectos se compilan en el directorio de target
. Fui a Project Properties
-> Java Build Path y agregué algunas carpetas que se ven así,
target / scala-2.12 / routes / target principal / scala-2.12 / twirl target / scala-2.12 / twirl / main
Ahora no quiero que suponga que tendrá estas carpetas exactas en su caso también. Eso depende de la configuración de tu proyecto. Pero debe agregar las carpetas dentro de la carpeta target / scala-2.x.
En Scala IDE 4.0.0 piensa que hay errores en un programa listo para usar de Play Framework 2.3.7, usted puede encontrar la solución (en resumen: agregar target/scala-2.11/twirl/main
folder a la ruta de compilación), darle una oportunidad.
La respuesta de @brent-foust funcionó para mí, pero solo inicialmente. Cada vez que reconstruía el proyecto desde IDEA, obtenía errores de "no encontrado: rutas" desde target/scala-2.11/twirl/main/views/html/main.template.scala
hasta que realizaba la solución alternativa de Brent nuevamente.
Finalmente descubrí que la solución a eso era cambiar una línea en el archivo .iml de
<excludeFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" />
a
<sourceFolder url="file://$MODULE_DIR$/target/scala-2.11/src_managed/main" isTestSource="false" />
No sé cuáles son las implicaciones a largo plazo de hacer esto, pero ha solucionado este problema. Algunos de los otros problemas similares mencionados también pueden corregirse aplicando el mismo cambio a algunas de las otras carpetas enumeradas en .iml.
Las otras soluciones no funcionaron para mí. Algunos me darían diferentes errores, algunos views.html.index
la pestaña Problemas pero me dejarían un garabato rojo en views.html.index
y el autocompletar no funcionaría con las plantillas scala.html.
Lo que finalmente funcionó fue abrir las propiedades del proyecto, ir a Java Build Path > Source
y agregar los dos directorios siguientes:
target/scala-2.11/src_managed/main
target/scala-2.11/twirl/main
Si solo hace target/scala-2.11/twirl/main
, perderá los archivos de clase generados desde el directorio conf
.
Ocasionalmente, después de agregar una vista en Play 2.4.x, IntelliJ IDEA a veces se confunde y se niega por completo a compilar. Incluso el proyecto de reconstrucción falla:
Esto todavía ocurre de vez en cuando en IDEA 15. Y cuando lo hace, la línea de comando proporciona la solución más rápida y confiable:
sbt clean; sbt compilar
¡Eso es! IDEA ahora compilará el proyecto como se esperaba.
Actualizar:
En el raro caso de que la sbt compile
completado correctamente en la línea de comando, pero IntelliJ IDEA 15 sigue dando el mismo error de "objeto x no es miembro", esto ha solucionado la confusión de IDEA:
Menú Archivo:
Para mí, cuando importé el proyecto a intellij asegurándome de que "marcaba" la casilla de verificación "importación automática" hice el truco.
Tuve el mismo problema al ejecutar Play 2.4.0-RC1 usando el diseño SBT predeterminado ( disablePlugins(PlayLayoutPlugin)
) y lo resolví agregando a build.sbt
:
sourceDirectories in (Compile, TwirlKeys.compileTemplates) :=
(unmanagedSourceDirectories in Compile).value
Yo tuve el mismo problema. target/scala-2.x/classes_managed
target/scala-2.x/classes
y target/scala-2.x/classes_managed
a mi ruta de compilación Java y Eclipse dejó de quejarse.