Очистить после внешней библиотеки Java - PullRequest
3 голосов
/ 29 июля 2010

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

Можно ли каким-либо способом принудительно очистить беспорядок, создаваемый внешней библиотекой?

1 Ответ

1 голос
/ 03 октября 2011

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

public class StupidSingleton {
  private static StupidSingleton instance;

  public StupidSingleton() {
    if (instance == null) {
      instance = this;
    } else {
      instance.foo(); // the implementation is irrelevant in this context
    }
  }
}

Что бы это ни было, доступны три основных решения:

  1. Не используйте банкуИщите обновления и альтернативы.
  2. Управляйте загрузкой классов с помощью пользовательского ClassLoader.Это трудный путь.
  3. Исправь это.Даже без исходного кода вы можете использовать отладчик и декомпилировать классы.Если вы найдете причину и не сможете получить официальное исправление, вы все равно можете создать proprietary_fixed.jar из декомпилированных классов.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...