У нас есть производственное приложение Java 1.6 / Tomcat 7 / Spring 4.
Мы перемещаем его в Openjdk 11. Это означает, что Spring 5 и я полагаю, что он также может включать Tomcat 9, так как мы обновляемвсе остальное.
Проблема в том, что это звучит само за себя:
ОШИБКА org.springframework.web.context.ContextLoader - Сбой инициализации контекста org.springframework.beans.factory.UnsatisfiedDependencyException:Ошибка создания бина с именем rootContextConfig: неудовлетворенная зависимость, выраженная через поле entityManagerFactory;вложенным исключением является org.springframework.beans.factory.BeanCreationException: ошибка при создании bean-компонента с именем entityManagerFactory, определенным в com.xxxxx.config.RootContextConfig: сбой вызова метода init;Вложенное исключение - java.lang.IllegalStateException: Для использования InstrumentationLoadTimeWeaver необходимо начать с агента Java.См. Документацию Spring.
Все хорошо.Единственная проблема в том, что у нас уже есть Java-агент Spring Insturment
-javaagent:${CATALINA_HOME}/lib/spring-instrument-5.1.5.RELEASE.jar
Как я уже говорил выше, это весь рабочий код, мы просто обновляем версии.
Я уверен, что LTW загружаетсяпотому что мы можем видеть ошибку, создаваемую классом InstrumentationLoadTimeWeaver.
@Override
public void addTransformer(ClassFileTransformer transformer) {
Assert.notNull(transformer, "Transformer must not be null");
FilteringClassFileTransformer actualTransformer =
new FilteringClassFileTransformer(transformer, this.classLoader);
synchronized (this.transformers) {
Assert.state(this.instrumentation != null,
"Must start with Java agent to use InstrumentationLoadTimeWeaver. See Spring documentation.");
this.instrumentation.addTransformer(actualTransformer);
this.transformers.add(actualTransformer);
}
}
Я просто не могу понять, как ее можно создать с помощью нулевого инструментария.Очевидно, я что-то упустил.Вероятно, что-то маленькое и глупое.Но сейчас у меня нет идей.