Eclipse генерирует ExceptionInInitializerError при запуске, NoClassDefFoundError при отладке - PullRequest
1 голос
/ 27 сентября 2010

Проект A зависит от проекта B.

На время компиляции все ок.

При отладке, когда вызывается статическая функция из класса bClass проекта B, я получаю NoClassDefFoundError.

При запуске я получаю ExceptionInInitializerError.

Кроме того, bClass имеет статический инициализатор, и когда я ставлю точку останова, он никогда не достигает ее - что кажется мне очень странным, но также имеет смысл, поскольку класс, вероятно, не найден.

Есть идеи как исправить? Я проверил все зависимости в меру моего понимания.

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

В случае исключений NoClassDefFound, дважды проверьте ваш путь к классу времени выполнения с вашим путем к классу времени компиляции. Eclipse обычно использует classpath времени компиляции для CP времени выполнения, но если вы изменили конфигурацию запуска по умолчанию, они могут больше не совпадать.

0 голосов
/ 27 сентября 2010

Я часто обнаруживал, что если статический инициализатор генерирует исключение, то вы получаете такие запутанные и вводящие в заблуждение результаты. Попробуйте это: поместите оператор try / catch вокруг всего кода, который находится в статическом инициализаторе, и в блоке catch зарегистрируйте исключение (в журнале ошибок или в консоли). Если возникает исключение, это поможет вам сузить его.

static {
    try {
        // ... your code here ...
    } catch (Throwable t) {
        t.printStackTrace();
    }
}

Когда вы закончите отладку, вы должны удалить это предложение try / catch, потому что оно поглощает исключение.

...