У меня есть приложение Spring Boot. Я упаковываю его с помощью maven и выполняю с помощью java -jar xxx.jar. Приложение работает. Однако, если я копирую jar на другой компьютер (ту же версию java, ту же ОС), я получаю ошибку зависимости:
org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name
'org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaConfiguration':...
...
Unsatisfied dependency expressed through constructor parameter 0
...
Bean instantiation via factory method failed
...
Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException:
Failed to instantiate [javax.sql.DataSource]:
Factory method 'dataSource' threw exception; nested exception is java.lang.NullPointerException
Я добавил debug = true, чтобы показать путь к классам во время выполнения, но он выглядит одинаково на обеих машинах (были проблемы с порядком пути к классам между выполнением maven и выполнением java)
РЕДАКТИРОВАТЬ: на самом деле проблема не в том, чтобы сменить машину: если я просто переместу банку в другую папку, я получу ту же ошибку. Если я посмотрю на правильный запущенный процесс, то, очевидно, будет очевидно, что в пути к классам есть ссылки на целевую папку проекта, которые не могут быть удовлетворены ...
Оригинальная машина - iOS, я попробовал банку на другой iOS и машину Centos с тем же результатом.
Я думал, что jar очень переносим для развертывания, поэтому я не понимаю, есть ли лучший способ развертывания приложения или какой-либо переменной среды, которую я не принимаю во внимание
РЕДАКТИРОВАТЬ: я использую Maven. Я делаю
mvn package
или
mvn clean install
и у меня есть зависимости, упомянутые в ответе
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>