Estoy trabajando en un proyecto de Scala que está importando dos bibliotecas de Java. Debido a una planificación deficiente, las dos bibliotecas de Java tienen nombres de paquete similares, uno con com en el frente y otro sin.Paquete de Scala import java que se agrega com
El problema es que Scala está buscando el paquete con com primero y diciéndome que el paquete no existe. Si elimino todas las referencias a la biblioteca con com en frente del paquete, la compilación funciona.
Para mostrar un ejemplo que tiene sentido:
En foo.jar tenemos un paquete de company.product.core
En bar.jar tenemos un com.company.product.other paquete.
Si ambos frascos están en la ruta de clase, la línea:
import company.product.core.ClassName
falla con el error "núcleo valor no es miembro de com.companyname.product paquete" Si eliminamos bar.jar, la compilación funciona bien.
¿Scala está tratando de salvarme de escribir com.? ¿Hay alguna manera de decirle que importe solo lo que le digo?
Esto funciona, pero tengo curiosidad de por qué Scala hace esto? – Jeff
Scala habilita una coincidencia relativa de una importación de paquete anterior. Al igual que, después de "importar scala.collection._", simplemente puede llamar a "import mutable._" para obtener "scala.collection.mutable._". Causa muchas cosas divertidas con el nombre del paquete "neto". –
@Tristan import collection._ funciona también (scala ya está importado) –