У меня есть два приложения, сообщающиеся с помощью пульта Akka.Akka remote: можно ли работать с классами из двух разных приложений, у которых нет одинакового имени пакета?
У меня есть один класс в моем первом применении в pachage a
:
@SerialVersionUID(42L)
case class A()
и тот же один в моем втором приложении, но в другом пакете b
:
@SerialVersionUID(42L)
case class A()
Но когда я получаю по сообщению актера с экземпляром класса a
Я получаю java.lang.ClassNotFoundException: a.A
из-за разных имен пакетов.
Есть ли способ легко избежать этого?
Для первого варианта: если я использую Protobuf, это сработает? Для второго: есть ли простой способ поделиться моделью данных? Единственный способ, который я могу придумать, - создать упакованную библиотеку, но мне требуется переупаковать ее каждый раз, когда я хочу изменить эту модель. – Simon
Если вы хотите, чтобы два приложения говорили друг с другом, вы должны договориться о какой-то модели данных. Использование protobuf отлично, если вам нужна быстрая и портативная сериализация, чтобы вы могли читать/писать с нескольких языков, но не преодолеваете то, что вам нужно поделиться своими определениями .proto. – Edmondo1984
Таким образом, нет другого способа, кроме создания упакованной библиотеки и переупаковки это каждый раз, когда я хочу изменить эту модель? – Simon