tutorial software renault examples scala

software - scala wikipedia



La importaciĆ³n Scala no funciona: objeto La base de datos no es miembro del paquete com.me.project.controllers.com.me.project.database (8)

Compartiré mi historia, solo en caso de que pueda ayudar a alguien.

Escenario: la compilación intellij tiene éxito, pero la creación de gradle falla en la import com.foo.Bar , donde Bar es una clase scala.

Motivo de TLDR: Bar se ubicó en src/main/java/... en lugar de src/main/scala/...

Razón real: la compilación no fue compilada por la tarea compileScala gradle (desde el plugin scala de Gradle) porque busca fuentes scala solo bajo src/<sourceSet>/scala .

De docs.gradle.org :

Todos los directorios de origen de Scala pueden contener código Scala y Java. Los directorios de origen de Java solo pueden contener código fuente de Java.

Espero que esto ayude

Tengo un problema al intentar importar en scala. El objeto Database existe en com.me.project.database pero cuando intento importarlo:

import com.me.project.database.Database

Me sale el error:

object Database is not a member of package com.me.project.controllers.com.me.project.database

Alguna idea de cual es el problema?

Editar :

Vale la pena mencionar que la importación está en el archivo Application.scala bajo el paquete com.me.project.controllers , pero no puedo entender por qué agregaría la importación al paquete actual, raro ...

Editar 2 :

Entonces usando:

import _root_.com.me.project.database.Database

Funciona como se menciona a continuación. Pero, ¿debería funcionar sin el _root_ ? Los comentarios hasta ahora parecen indicar que debería.

Respuesta :

Entonces resultó que solo necesitaba limpiar el proyecto para que la importación funcionara correctamente, usando ambos:

import _root_.com.me.project.database.Database import com.me.project.database.Database

son soluciones válidas. Eclipse acababa de confundirse.


En mi caso, también tuve que verificar que el objeto que no se encuentra como miembro del paquete se haya compilado correctamente.


En mi caso, tuve que ejecutar sbt clean .


Me doy cuenta de que esta pregunta ya tiene una respuesta aceptada, pero dado que experimenté el mismo problema pero con una causa diferente, pensé que agregaría una respuesta.

Tenía un montón de proyectos interdependientes que de repente necesitaban una importación de raíz para compilar. Resultó que había duplicado la declaración del paquete en un solo archivo. Esto causó algún tipo de reacción en cadena y dificultó la búsqueda del origen del problema.

En resumen, tuve

package foo.bar package foo.bar

en la parte superior del archivo en lugar de solo

package foo.bar

Espero que esto le ahorre a alguien una cacería de errores muy tediosa.


Si está utilizando gradle como herramienta de compilación, asegúrese de que la tarea jar no esté desactivada.

Tenía varios módulos en mi proyecto, donde un módulo dependía de algunos otros módulos. Sin embargo, había desactivado la tarea jar en build.gradle :

jar { enabled = false }

Eso causó que fallara al resolver clases en los módulos dependientes y fallara con el error anterior.


Tuve una situación similar, que estaba fallando tanto en IntelliJ como en Maven en la línea de comando. Fui a aplicar la solución temporal sugerida (agregando _root_ ) pero intellij estaba tan mal que no era posible.

Eventualmente noté que había creado mal un paquete para que repitiera todo el camino del paquete. Eso significaba que el directorio en el que estaba mi clase tenía una subcarpeta llamada "com", y el inicio de mi archivo se veía así:

package com.mycompany.mydept.myproject.myfunctionality.sub1 import com.holdenkarau.spark.testing.DataFrameSuiteBase

donde tenía otro paquete llamado com.mycompany.mydept.myproject.myfunctionality.sub1.com.mycompany.mydept.myproject.myfunctionality.sub2

Y el compilador buscaba "holdenkarau" en com.mycompany.mydept.myproject.myfunctionality.com y falló.


las importaciones pueden ser relativas. ¿Es esa la única importación que tienes? tenga cuidado con otras importaciones como

import com.me

en última instancia, esto debería solucionarlo, entonces puedes tratar de encontrar más al respecto:

import _root_.com.me.project.database.Database


Java -> conversión de Scala sin limpieza

No olvides limpiar si conviertes algún archivo en un proyecto de Java a Scala. Tenía una construcción de integración continua ejecutándose donde no podía hacer que las cosas funcionasen, aunque la compilación funcionaba localmente, después de convertir una clase Java en un objeto Scala. Solución: agregue ''limpiar'' al procedimiento de compilación en el servidor de CI. El nombre del archivo .class generado en Scala es ligeramente diferente que para una clase Java, creo, por lo que es muy probable que sea lo que estaba causando el problema.