我使用spring boot2.0和h2内存数据库创建了spring boot应用程序,该应用程序运行成功。将其更新为spring boot 2.2.1.RELEASE后,部署失败。
这是主要班级:
@SpringBootApplication(exclude = { SecurityAutoConfiguration.class })
public class SampleServicesApplication extends SpringBootServletInitializer implements CommandLineRunner
{
@Autowired
private UserPartnerSource userSource;
@Autowired
UserPartnerDao userPartnerDao;
private static final Logger logger = LoggerFactory.getLogger(SampleServicesApplication.class);
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application)
{
return application.sources(SampleServicesApplication.class)
}
public static void main(String[] args)
{
SpringApplication.run(SampleServicesApplication.class, args);
}
@Override
public void run(String... args) throws Exception
{
List<UserPartner> userPartner = userSource.getUsers();
userPartnerDao.saveAll(userPartner);
}
}
public interface UserPartnerDao extends JpaRepository<UserPartner, Long> {
@Query("select u from UserPartner u where u.userAccessToken =?1")
UserPartner findByToken(String accessToken);
@Query("select u.userAccessSecret from UserPartner u where u.userAccessToken =?1")
String getUserAccessSecret(String accessToken);
}
这是我在pom.xml中使用的依赖项
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.1.RELEASE</version>
<relativePath /> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>de.codecentric</groupId>
<artifactId>spring-boot-admin-starter-client</artifactId>
<version>2.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
</dependency>
dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
</depedencies>
一旦我从2.0.8更新到2.2.1,运行应用程序时出现以下错误。 我尝试了不同的方法,但没有任何效果。任何建议,不胜感激。
Caused by: java.lang.NoClassDefFoundError: org/springframework/orm/jpa/support/PersistenceAnnotationBeanPostProcessor
at java.lang.Thread.run(Thread.java:748)
at org.springframework.boot.loader.MainMethodRunner.run(MainMethodRunner.java:53)
at java.lang.reflect.Method.invoke(Method.java:498)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.lang.reflect.InvocationTargetException
at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:706)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:95)
at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanDefinitionRegistryPostProcessors(PostProcessorRegistrationDelegate.java:275)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.postProcessBeanDefinitionRegistry(ConfigurationClassPostProcessor.java:242)
at org.springframework.context.annotation.ConfigurationClassPostProcessor.processConfigBeanDefinitions(ConfigurationClassPostProcessor.java:337)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitions(ConfigurationClassBeanDefinitionReader.java:120)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsForConfigurationClass(ConfigurationClassBeanDefinitionReader.java:148)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.loadBeanDefinitionsFromRegistrars(ConfigurationClassBeanDefinitionReader.java:384)
at java.util.LinkedHashMap.forEach(LinkedHashMap.java:684)
at org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader.lambda$loadBeanDefinitionsFromRegistrars$1(ConfigurationClassBeanDefinitionReader.java:385)
at org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport.registerBeanDefinitions(AbstractRepositoryConfigurationSourceSupport.java:62)
at org.springframework.boot.autoconfigure.data.jpa.JpaRepositoriesRegistrar.getRepositoryConfigurationExtension(JpaRepositoriesRegistrar.java:54)
at org.springframework.data.jpa.repository.config.JpaRepositoryConfigExtension.<clinit>(JpaRepositoryConfigExtension.java:76)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
at java.net.URLClassLoader$1.run(URLClassLoader.java:371)
Caused by: java.lang.ClassNotFoundException: org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor
... 6 more
at com.garmin.gh.apps.wellnessmonitor.GcsWellnessServicesApplication.main(SampleServicesApplication.java:43)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1215)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1226)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:315)
at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:397)
at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:747)
at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:141)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:532)
... 34 more
at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:463)
at sun.misc.Resource.getBytes(Resource.java:124)
at org.springframework.boot.loader.jar.ZipInflaterInputStream.read(ZipInflaterInputStream.java:52)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:164)
Caused by: java.util.zip.ZipException: invalid code lengths set
... 27 more
at java.lang.ClassLoader.loadClass(ClassLoader.java:351)
at org.springframework.boot.loader.LaunchedURLClassLoader.loadClass(LaunchedURLClassLoader.java:136)
at org.springframework.boot.loader.LaunchedURLClassLoader.doLoadClass(LaunchedURLClassLoader.java:170)
at java.lang.ClassLoader.loadClass(ClassLoader.java:418)
at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
Exit status 1
答案 0 :(得分:1)
似乎包含PersistenceAnnotationBeanPostProcessor
的jar文件已损坏:
java.util.zip.ZipException: invalid code lengths set
尝试从Maven的本地缓存中删除spring-orm
并重建。这将导致Maven重新下载jar。希望它不会再次损坏它。