Je travaille sur un projet Scala qui importe deux bibliothèques Java. Grâce à une mauvaise planification, les deux bibliothèques Java ont des noms de paquets similaires, l'un avec com sur le devant, l'autre sans. Le problème est que Scala est à la recherche du paquet avec com à l'avant, et me dit que le paquet n'existe pas. Si je supprime toutes les références à la bibliothèque avec com devant le paquet, la compilation fonctionne.Scala import java package app com
Pour montrer un exemple qui est logique:
En foo.jar nous avons un paquet company.product.core
En bar.jar nous avons un com.company.product.other paquet.
Si les deux pots sont sur le chemin de classe, la ligne:
import company.product.core.ClassName
échoue avec l'erreur « valeur fondamentale n'est pas membre du paquet com.companyname.product » Si nous supprimons bar.jar, la compilation fonctionne bien. Est-ce que Scala essaie de me sauver de taper com.?
Y at-il un moyen de lui dire d'importer seulement ce que je lui dis?
Cela fonctionne, mais je suis curieux de savoir pourquoi Scala fait cela? – Jeff
Scala active une correspondance relative d'une importation de package antérieure. Comme, après "import scala.collection._" vous pouvez simplement appeler "import mutable._" pour obtenir "scala.collection.mutable._". Il provoque beaucoup de choses amusantes avec le nom du paquet "net". –
@Tristan import collection._ fonctionne aussi (scala est déjà importé) –