2012-06-06 14 views
9

Buen día. Por favor, avísame. El problema es que el controlador no ve la plantilla que desea utilizar:play2 framework my template no se ve. : el paquete views.html no existe

[etl_admin] $ compile [info] Compiling 3 Scala sources and 4 Java sources to D:\ECLIPSE_WORKSPACES\play2_apps\etl_admin\target\scala-2.9.1\classes... [error] D:\ECLIPSE_WORKSPACES\play2_apps\etl_admin\app\controllers\EtlWorkflowSeqNodeController.java:7: error: package views.html.etlworkflowseqnode does not exist [error] import views.html.etlworkflowseqnode.list; [error]
^[error] D:\ECLIPSE_WORKSPACES\play2_apps\etl_admin\app\controllers\EtlWorkflowSeqNodeController.java:14: error: cannot find symbol

[error] list.render(EtlWorkflowSeqNode.findTree(jobId)) [error] ^[error] symbol: variable list [error]
location: class EtlWorkflowSeqNodeController [error] 2 errors [error] {file:/D:/ECLIPSE_WORKSPACES/play2_apps/etl_admin/}etl_admin/compile:compile: javac returned nonzero exit code [error] Total time: 7 s, completed 05.06.2012 17:14:44

Aquí es código del controlador:

package controllers; 

import play.mvc.Controller; 
import play.mvc.Result; 
import models.EtlWorkflowSeqNode; 
import play.db.jpa.Transactional; 
import views.html.etlworkflowseqnode.list; /*LINE #7, Eclipse really tells that there is no such package*/ 

public class EtlWorkflowSeqNodeController extends Controller { 

    @Transactional 
    public static Result list(Integer jobId) { 
     return ok(
      list.render(EtlWorkflowSeqNode.findTree(jobId)) 
     ); 
    } 
} 

He adjuntado una imagen con mi árbol del proyecto. Hay tal paquete y hay una plantilla llamada "lista". My Eclipse lo hago mal

Respuesta

14

¡Omg, el problema era tan fácil! * classes_managed * (esta carpeta mantiene plantillas de scala compiladas) no se actualizaron con las plantillas recién agregadas. Intenté llamar al play compile ayer, no ayuda. Las nuevas plantillas del nuevo paquete no fueron compiladas. Esta mañana llamé play clean compile aaand ... ¡hurra! Obtuve plantillas compiladas y desapareció el problema con el paquete perdido (no olvides actualizar el proyecto Eclipse, forzarlo a actualizar la estructura del proyecto desde el sistema de archivos. Le gusta guardarlo todo en caché)

Lo siento por molestar, parece no estaba atento durante la lectura de la documentación :(

+0

Tengo un posible problema relacionado: cuando cambio una plantilla de scala, p. agregue otro parámetro requerido que aún no se ha agregado en el controlador, esperaría obtener un error en Eclipse. Sin embargo, Eclipse parece no actualizar los cambios en la plantilla scala. Cuando abro la página en el navegador, obtengo el mensaje de error de compilación esperado. ¿Alguna idea de cómo superar esto? – Bachi

+0

@Bachi Debería hacer una nueva pregunta. – paradigmatic

+0

1. Ejecute la consola de reproducción, 2. ejecute la limpieza y luego ejecute la compilación, 3. vuelva a Eclipse y actualice su proyecto. Eclipse veremos cambios en las plantillas (actualizar el código byte de la carpeta managed_classes) y puede seguir usándolo. – Sergey

1

Por lo que yo puedo decir, no tienes un nombre de paquete etlworkflowseqnode! La forma correcta de importar la plantilla de lista, debe ser como este:

import views.html.list; 

o, si usted va a tener varios puntos de vista, puede importar a todos con una importación de comodín.

import views.html.*; 
6

el problema es que Eclipse no está viendo la carpeta src_managed, que se actualiza de forma dinámica por el marco juego.

Ir al proyecto ruta → propiedades → → java build bibliotecas (es una pestaña) → agregar carpeta de clase externa

Entonces s elija la carpeta src_managed, que debe estar en la carpeta target-> scala-x.x.x en el mismo directorio que su proyecto.

Esto agregará src_managed a su ruta de compilación, y Eclipse ahora comprenderá que estas plantillas son válidas.

Es posible que tenga que ejecutar 'play compilación limpia' en la consola de juego marco A continuación, puede que tenga que ejecutar el proyecto -> limpia en Eclipse

+0

Parece que hoy en día las plantillas no están en src_managed sino en el directorio twirl. –

0

Para resolver "paquete views.html doesn no existe":

Ejecute "sbt compile" o "sbt clean compile". Eso debería crear una estructura de carpetas en su proyecto como target \ scala xx \ twirl \ main \ views.html

+0

no funcionó para mí. No veo ninguna carpeta en target/scala-2.10 llamada twirl – daniyel

+0

que utilizo para ejecutar "sbt clean compile" desde mi terminal intellij y funciona para mí todo el tiempo. Si eso no funciona, intente limpiar la memoria caché del sistema seleccionando Archivo | Invalidar caches/reiniciar desde el menú de Intellij –

2

En Play 2.5, yo era capaz de solucionar este problema con:

importación de la vista:

import views.html.index; 

Luego dentro del controlador:

return ok(index.render("Hello")); 

Algo como esto sin problemas complejos, por extraño que su uso como return ok(views.html.index.render("Hello"))) no funcionaba al importar y luego usarlo funcionó bien.

Seguro que todas las respuestas aquí son útiles también, a veces el problema simplemente es limpiar y compilar, pero incluso esto no soluciona realmente el problema todo el tiempo, independientemente del IDE que esté usando, estaba usando CLI y estaba dando cannot find symbol error también.

Cuestiones relacionadas