Мой сайт работает/работал нормально. Но я вынужден обновить ОС серверов, на которых он работает, потому что более новая версия программного обеспечения, которое мне нужно обновить, не будет работать на старой ОС. Итак, теперь я в аду зависимости.
Итак, на тестовом сервере я обновил ОС с Ubuntu 14.04 до 18.04.1. Я также был вынужден использовать более позднюю версию Java из:
echo $JAVA_HOME
/usr/lib/jvm/java-7-oracle
к
echo $JAVA_HOME
/usr/lib/jvm/java-11-openjdk-amd64/
И версия Tomcat с 7 по 8.
Немного повозившись (я начал это в январе, но только что смог вернуться к этому, поэтому я не могу вспомнить, что именно, хотя при необходимости могу поискать в истории подсказки), я могу собрать свое приложение ОК, но он терпит неудачу на последнем препятствии:
BUILD SUCCESSFUL Total time: 19 seconds Using CATALINA_BASE:
/var/lib/tomcat8 Using CATALINA_HOME: /usr/share/tomcat8 Using CATALINA_TMPDIR: /var/lib/tomcat8/temp Using JRE_HOME:
/usr/lib/jvm/java-11-openjdk-amd64/ Using CLASSPATH:
/usr/share/tomcat8/bin/bootstrap.jar:/usr/share/tomcat8/bin/tomcat-juli.jar Using CATALINA_PID: /root/catalina.pid Tomcat started. --2019-05-28 16:10:16-- http://localhost:8080/ Resolving localhost (localhost)... 127.0.0.1 Connecting to localhost (localhost)|127.0.0.1|:8080... connected. HTTP request sent, awaiting response... 404 2019-05-28 16:10:16 ERROR 404: (no description).
Дальнейшее расследование показывает:
less /var/log/tomcat8/catalina.out
2019-05-28 16:10:06.418 UTC [localhost-startStop-1] ERROR org.springframework.web.context.ContextLoader - Context initialization failed org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'embedController' defined in ServletContext resource [/WEB-INF/playground-servlet.xml]: Cannot resolve reference to bean 'homeController' while settin g bean property 'homeController'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'homeController' defined in ServletContext resource [/WEB-INF/playground-servlet.xml]: Cannot re solve reference to bean 'execService' while setting bean property 'execService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'execService': Invocation of init method failed; nested exception is javax.ws.rs.ProcessingException: java.net.ConnectException: Connection refused (Connection refused) at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:326) ~[spring-beans-3.2.8.RELEASE.jar:3.2.8.RELEASE]
Теперь должно быть совершенно ясно, что я не очень понимаю, что делаю. Я провел день, много гуглил и просматривал множество ответов Stack Overflow, но ничего не кажется актуальным.
Начинается с public interface ExecService {
. Я знаю, что такое класс интерфейса на другом языке, так что это поможет? Класс, который его реализует, имеет более 1800 строк кода. Очевидно, я нервничаю из-за публикации исходного кода. Думаю, я могу попробовать MCVE, но у меня так мало опыта, что создать его будет сложно.
честно говоря, я предполагаю, что ответ @jspcal - правильное направление. Обновление Spring до 5.x или понижение версии Java является минимальным требованием. после этого, если исключение все еще происходит, мы можем отгадать дальнейшие варианты;) :D
Это полная трассировка стека исключений?
эта ошибка исходит от Spring. Для поддержки Java 11 вам также необходимо обновить Spring до последней версии 5.x (в настоящее время 5.2.x).
Вы можете столкнуться с различными проблемами совместимости при обновлении старой среды до Java 11. Если вам не требуется обновление, вы можете оставить предыдущую версию. Java 8 все еще поддерживается.
Спасибо. Я расследую. Я не могу вспомнить, почему я выбрал 11.
Я перешел на Java 8. Я пошел на Spring 5.2.x, но у меня были всевозможные проблемы. Я смягчил его, перейдя на Spring 4.3.24, и получил одну проблему, которую я был доволен тем, что смог исправить. Теперь я вернулся к тому, с чего начал с той же ошибкой. Вероятно, лучше опубликовать новый вопрос. Спасибо за помощь.
Spring не может создать bean-компонент execService для вас, потому что, когда он пытается создать экземпляр объекта класса, он получает
ConnectionRefusedException
. Чтобы помочь вам решить эту проблему, нам нужно увидеть класс для bean-компонента «execService».