Ошибка выполнения не может найти символ ByteValue$$Native при использовании ChronicleMap

Проект, над которым я работаю, состоит из нескольких компонентов — нескольких независимых библиотек, скомпилированных в JAR-файлы, и основного проекта, который на них ссылается. Все написано на Scala.

Я использую ChronicleMap для внутреннего использования в одной из этих библиотек, используя собственный класс значений с собственным маршалером. При запуске основного проекта я получаю следующие ошибки:

 /net/openhft/chronicle/core/values/ByteValue$$Native.java:15: error: cannot find symbol
public class ByteValue$$Native implements ByteValue, Copyable<ByteValue>, BytesMarshallable, Byteable {
                                          ^
  symbol: class ByteValue
/net/openhft/chronicle/core/values/ByteValue$$Native.java:15: error: cannot find symbol
public class ByteValue$$Native implements ByteValue, Copyable<ByteValue>, BytesMarshallable, Byteable {
                                                              ^
  symbol: class ByteValue
/net/openhft/chronicle/core/values/ByteValue$$Native.java:39: error: cannot find symbol
  public void copyFrom(ByteValue from) {
                       ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Native
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:12: error: cannot find symbol
public class ByteValue$$Heap implements ByteValue, Copyable<ByteValue>, BytesMarshallable {
                                        ^
  symbol: class ByteValue
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:12: error: cannot find symbol
public class ByteValue$$Heap implements ByteValue, Copyable<ByteValue>, BytesMarshallable {
                                                            ^
  symbol: class ByteValue
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:34: error: cannot find symbol
  public void copyFrom(ByteValue from) {
                       ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Heap
/net/openhft/chronicle/core/values/ByteValue$$Native.java:20: error: method does not override or implement a method from a supertype
  @Override
  ^
/net/openhft/chronicle/core/values/ByteValue$$Native.java:25: error: method does not override or implement a method from a supertype
  @Override
  ^
/net/openhft/chronicle/core/values/ByteValue$$Native.java:30: error: method does not override or implement a method from a supertype
  @Override
  ^
/net/openhft/chronicle/core/values/ByteValue$$Native.java:65: error: cannot find symbol
    if (!(obj instanceof ByteValue)) return false;
                         ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Native
/net/openhft/chronicle/core/values/ByteValue$$Native.java:66: error: cannot find symbol
    ByteValue other = (ByteValue) obj;
    ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Native
/net/openhft/chronicle/core/values/ByteValue$$Native.java:66: error: cannot find symbol
    ByteValue other = (ByteValue) obj;
                       ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Native
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:15: error: method does not override or implement a method from a supertype
  @Override
  ^
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:21: error: method does not override or implement a method from a supertype
  @Override
  ^
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:26: error: method does not override or implement a method from a supertype
  @Override
  ^
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:57: error: cannot find symbol
    if (!(obj instanceof ByteValue)) return false;
                         ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Heap
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:58: error: cannot find symbol
    ByteValue other = (ByteValue) obj;
    ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Heap
/net/openhft/chronicle/core/values/ByteValue$$Heap.java:58: error: cannot find symbol
    ByteValue other = (ByteValue) obj;
                       ^
  symbol:   class ByteValue
  location: class net.openhft.chronicle.core.values.ByteValue$$Heap

Это происходит только при запуске проекта из Intellij IDEA, а не при запуске из командной строки.

Кроме того, если я настрою автономный проект, использующий тот же ChronicleMap с тем же настраиваемым классом и упорядочивателем, у меня не возникнет проблем с его запуском из IDE. Проблема возникает только при запуске проекта, который использует мою библиотеку из IDE.

Поэтому я думаю, что это может быть связано или не связано с порядком загрузки классов или, возможно, с некоторыми зависимостями, отсутствующими в среде IDE.

Могу ли я что-нибудь сделать, чтобы выяснить, почему я не могу запустить из IDE?


person Jonathan Moore    schedule 01.08.2017    source источник


Ответы (1)


это, безусловно, похоже на какую-то проблему с конфигурацией.

Вы можете получить дополнительную информацию о том, какая загрузка классов происходит, запустив код с помощью -XX:+TraceClassLoading и сравнив вывод между успешным и неуспешным выполнением вашей программы.

person Mark Price    schedule 02.08.2017