Я пытаюсь un-Spring IoC несколько классов Java и загружать их непосредственно в некоторый код Scala. Естественно, я нахожу, что есть пространство имен конфликтов между пакетом, какКласс SomeClass в пакете x недоступен в com.a.y.x
com.a.x.SomeClass
и
com.a.y.x.SomeClass
Я попытался с помощью пространства имен резольверами импорта, как
import com.a.y.x.{ SomeClass => YYYSomeClass }
import com.a.x{ SomeClass => XXXSomeClass }
Это чистит но ссылаясь на те классы, которые позже в классах показывают ошибку, как зависающую в ScalaIDE, и после чистых компиляций.
Когда я компилирую из Gradle плагина лестницы, или через типизированный ScalaIDE с Скале 2.10.2 или 2.10.3, я получаю следующий тип не-полезно сообщений об ошибке:
class SomeClass in package x cannot be accessed in com.a.y.x
Проблема возникает если я попытаюсь использовать класс из com.ayx, который не имеет конфликта пространства имен. Если бы я попробовать некоторые из scalac флагов, я также был в состоянии получить предупреждение, что это немного отличается (на стадии TypeR):
class SomeClass in package x cannot be accessed in y.this.x
Я бы очень хотел бы знать, если есть способ расширить первая ссылка на пакет. У меня возникли проблемы с настройкой проекта Eclipse для отладки компилятора scalac, и я не нашел флаг scalac, который добавляет полезную информацию об ошибке.
Ошибка возникает, когда я либо пытаюсь установить ctx.getBean("someClass").asInstanceOf[XXXSomeClass]
, либо new XXXSomeClass
.
Ссылка из предупреждения заставляет меня думать, что есть некоторые путаницы в работе. Я не думаю, что это проблема classpath в более крупном проекте, над которым я работаю, потому что удаление одной банки устраняет возможность разрешения импорта, однако я не могу воспроизвести ее с помощью простых классов примеров в отдельном проекте.
Немного больше информации о java-классах - разные конфликтующие пакеты java находятся в отдельных банках, которые были скомпилированы с помощью 1,6-символа Java. Они являются высшими уровнями, общедоступными классами, хотя два являются синглтонами с частными конструкторами и соответствующими общедоступными статическими методами getInstance().
Я бы «уйти» на х или у пакета в таких случаях и использовать 'х. SomeClass' или 'y.SomeClass' (но, вероятно, только на одном). – user2864740
@ user2864740 - Я пробовал полные пути без импорта и получал те же ошибки. Я думаю, что я также пробовал импорт из одного пакета и полный путь к другому, но завтра я проверю. – n0741337
@ som-snytt - отношения классов в некоторых случаях сложнее - я выложу больше завтра. Пакет класса scala по сравнению с java похож на 'package total.unrelated'. Не могли бы вы уточнить, какую аннотацию вы думаете, что я должен попробовать? – n0741337