Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Spring boot error:java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy

I want to use spring boot to start my application ,but after i add some relative jar at pom.xml,it return this error:and i thank may be it caused by some conflict jars?

Application.java

package com.mm.application; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.context.support.ClassPathXmlApplicationContext; import org.springframework.web.servlet.view.InternalResourceViewResolver; @ComponentScan("com.mm.controller") @Configuration @EnableAutoConfiguration public class Application { public static void main(String[] args) {     //spring properties xml     ApplicationContext context = new ClassPathXmlApplicationContext(             "Spring-Module.xml");     SpringApplication.run(Application.class, args); } @Bean public InternalResourceViewResolver setupViewResolver() {     InternalResourceViewResolver resolver = new InternalResourceViewResolver();     resolver.setPrefix("/WEB-INF/jsp/");     resolver.setSuffix(".jsp");     return resolver; }  } 

Error:

Error starting ApplicationContext. To display the auto-configuration report enabled debug logging (start with --debug)  Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'requestMappingHandlerMapping' defined in class path resource [org/springframework/web/servlet/config/annotation/DelegatingWebMvcConfiguration.class]: Invocation of init method failed; nested exception is java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1553) atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) atorg.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) atorg.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) atorg.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:703) at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) atorg.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) atorg.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:120) at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:648) at org.springframework.boot.SpringApplication.run(SpringApplication.java:311) at org.springframework.boot.SpringApplication.run(SpringApplication.java:909) at org.springframework.boot.SpringApplication.run(SpringApplication.java:898) at com.mm.application.Application.main(Application.java:20) 

Main Problem:

 Caused by: java.lang.ArrayStoreException:sun.reflect.annotation.TypeNotPresentExceptionProxy atsun.reflect.annotation.AnnotationParser.parseClassArray(AnnotationParser.java:673) at sun.reflect.annotation.AnnotationParser.parseArray(AnnotationParser.java:480) atsun.reflect.annotation.AnnotationParser.parseMemberValue(AnnotationParser.java:306) atsun.reflect.annotation.AnnotationParser.parseAnnotation(AnnotationParser.java:241) atsun.reflect.annotation.AnnotationParser.parseAnnotations2(AnnotationParser.java:88) atsun.reflect.annotation.AnnotationParser.parseAnnotations(AnnotationParser.java:70) at java.lang.Class.initAnnotationsIfNecessary(Class.java:3178) at java.lang.Class.initAnnotationsIfNecessary(Class.java:3185) at java.lang.Class.getDeclaredAnnotations(Class.java:3166) atorg.springframework.core.annotation.AnnotationUtils.isAnnotationDeclaredLocally(AnnotationUtils.java:395) atorg.springframework.core.annotation.AnnotationUtils.findAnnotation(AnnotationUtils.java:281) atorg.springframework.core.annotation.AnnotationUtils.findAnnotation(AnnotationUtils.java:265) atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.isHandler(RequestMappingHandlerMapping.java:173) atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping.initHandlerMethods(AbstractHandlerMethodMapping.java:123) atorg.springframework.web.servlet.handler.AbstractHandlerMethodMapping.afterPropertiesSet(AbstractHandlerMethodMapping.java:103) atorg.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping.afterPropertiesSet(RequestMappingHandlerMapping.java:126) atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1612) atorg.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1549) ... 15 more 

pom.xml

<parent>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-starter-parent</artifactId>     <version>1.0.1.RELEASE</version> </parent>    <properties>     <start-class>com.kdubb.springboot.Application</start-class>     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> </properties>  <repositories>     <repository>         <id>spring-milestones</id>         <name>Spring Milestones</name>         <url>http://repo.spring.io/libs-milestone</url>         <snapshots>             <enabled>true</enabled>         </snapshots>     </repository>     <repository>         <id>spring-snapshots</id>         <name>Spring Snapshots</name>         <url>http://repo.spring.io/libs-snapshot</url>         <snapshots>             <enabled>true</enabled>         </snapshots>     </repository> </repositories>  <pluginRepositories>     <pluginRepository>         <id>spring-milestones</id>         <name>Spring Milestones</name>         <url>http://repo.spring.io/libs-milestone</url>         <snapshots>             <enabled>true</enabled>         </snapshots>     </pluginRepository>     <pluginRepository>         <id>spring-snapshots</id>         <name>Spring Snapshots</name>         <url>http://repo.spring.io/libs-snapshot</url>         <snapshots>             <enabled>true</enabled>         </snapshots>     </pluginRepository> </pluginRepositories>  <build>     <plugins>         <plugin>             <artifactId>maven-compiler-plugin</artifactId>             <configuration>                 <source>1.7</source>                 <target>1.7</target>             </configuration>         </plugin>         <plugin>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-maven-plugin</artifactId>         </plugin>     </plugins> </build>  <dependencies>      <dependency>         <groupId>mysql</groupId>         <artifactId>mysql-connector-java</artifactId>         <version>5.0.4</version>     </dependency>      <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-context</artifactId>         <version>4.0.0.RELEASE</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-tomcat</artifactId>         <scope>provided</scope>     </dependency>      <dependency>         <groupId>org.springframework</groupId>         <artifactId>spring-dao</artifactId>         <version>2.0.8</version>     </dependency>      <dependency>         <groupId>org.apache.tomcat.embed</groupId>         <artifactId>tomcat-embed-jasper</artifactId>         <scope>provided</scope>     </dependency>     <dependency>         <groupId>javax.servlet</groupId>         <artifactId>jstl</artifactId>     </dependency> </dependencies> 

LoginController

package com.mm.controller; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod;  @Controller @Component public class LoginController { @RequestMapping(value = "/CreditRating", method = RequestMethod.GET) public String index(Model model) {     model.addAttribute("wisdom", "Goodbye XML");     // renders /WEB-INF/jsp/Login.jsp     return "Login"; }  @RequestMapping(value = "/CreditRating/GoLogin") public String login(Model model) {      model.addAttribute("wisdom", "Goodbye XML");     // renders /WEB-INF/jsp/index.jsp     return "index"; } } 
like image 767
Methew Avatar asked Jun 22 '14 15:06

Methew


2 Answers

The solution can vary based on actual incompatibility root cause. The best way how to investigate such the issue is to follow this line:

Caused by: java.lang.ArrayStoreException: sun.reflect.annotation.TypeNotPresentExceptionProxy 

and put breakpoint into constructor of class 'TypeNotPresentExceptionProxy' (there is only one).

After execution in debug mode you should see what exactly is wrong and based on your findings you can decide what to do (add dependency, exclude autoconfig, ...)

In my specific case the breakpoint revealed this:

java.lang.ClassNotFoundException: org.springframework.integration.config.IntegrationManagementConfigurer 

As the solution I decided to exclude 'IntegrationAutoConfiguration' like this:

@SpringBootApplication(exclude = IntegrationAutoConfiguration.class) 
like image 154
Jozef Avatar answered Sep 23 '22 08:09

Jozef


As explained by Andy Wilkinson in this GitHub issue or in this thread, these obscure exceptions occur when some annotation is referencing a class that isn't on the classpath.

Most issues of this kind have been fixed in recent Spring Boot versions, but you can also trigger one from your code, for example when using @AutoConfigureAfter(X.class) where class X is missing on the classpath.

like image 33
Michael Técourt Avatar answered Sep 26 '22 08:09

Michael Técourt