Pracuję nad projektem Scala, który importuje dwie biblioteki Java. Z powodu złego planowania, dwie biblioteki Java mają podobne nazwy pakietów, jedna z com z przodu, druga bez.Scala import java package appending com
Problem polega na tym, że Scala szuka pakietu z pierwszym komunikatem i mówi mi, że pakiet nie istnieje. Jeśli usunę wszystkie odwołania do biblioteki za pomocą polecenia com przed pakietem, kompilacja działa.
Aby pokazać przykład, że ma sens:
W foo.jar mamy company.product.core pakiet
W bar.jar mamy com.company.product.other pakietu.
Jeśli oba słoiki są na ścieżce klasy, linia:
import company.product.core.ClassName
zakończy się błędem „rdzeń wartość nie jest członkiem paczki com.companyname.product” Jeśli usuniemy bar.jar, na kompilacji działa w porządku.
Czy Scala próbuje mnie uratować przed wpisaniem kom.? Czy istnieje sposób, aby powiedzieć, aby zaimportować tylko to, co mu powiem?
To działa, ale jestem ciekawy, dlaczego Scala to robi? – Jeff
Scala włącza dopasowanie względne z wcześniejszego importu pakietu. Podobnie jak po "import scala.collection._" możesz po prostu wywołać "import mutable._", aby uzyskać "scala.collection.mutable._". Powoduje mnóstwo zabawnych rzeczy dzięki nazwie pakietu "net". –
@ Tristan import collection._ działa również (scala jest już zaimportowana) –