2017-05-16 7 views
0

私はRESTのAPIに接続し、それを確認するために使用している単純な春のブートアプリケーションがあります。プロトタイプ作成のためのシンプルなアプリです。しかし、私は次のエラーを取得しています:春のブートクラスの定義エラーが見つかりません

Exception in thread "main" java.lang.NoClassDefFoundError: [Lcom/crossover/techtrial/java/se/dto/Account; 
    at com.crossover.techtrial.java.se.TrialApplication.main(TrialApplication.java:25) 
Caused by: java.lang.ClassNotFoundException: com.crossover.techtrial.java.se.dto.Account 
    at java.net.URLClassLoader.findClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) 
    at java.lang.ClassLoader.loadClass(Unknown Source) 
    ... 1 more 

私はクラスのアカウントを定義しているので、私はなぜそれが全くわからoccuringされていないいる:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties; 

@JsonIgnoreProperties(ignoreUnknown = true) 
public class Account 
{ 
    private String id; 

    private MonetaryAmount monetaryAmount; 

    public Account() 
    { 

    } 

    public String getId() 
    { 
     return id; 
    } 

    public void setId(String id) 
    { 
     this.id = id; 
    } 

    public MonetaryAmount getMonetaryAmount() 
    { 
     return monetaryAmount; 
    } 

    public void setMonetaryAmount(MonetaryAmount monetaryAmount) 
    { 
     this.monetaryAmount = monetaryAmount; 
    } 

} 

私の呼び出しコード:

package com.crossover.techtrial.java.se; 

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.beans.factory.annotation.Value; 
import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.web.client.RestTemplate; 

import com.crossover.techtrial.java.se.dto.Account; 

@SpringBootApplication 
public class TrialApplication 
{ 
    @Autowired 
    public static RestTemplate restTemplate; 

    @Value("${apiforest.baseuri}") 
    public static String baseURI; 

    public static void main(String[] args) 
    { 

     String url = baseURI + "/paypallets/accounts"; 
     //SpringApplication.run(TrialApplication.class, args); 
     restTemplate.getForObject(url, Account[].class); 
     System.out.println(url); 
    } 
} 

別の問題は、application.propertiesで定義したキー "apiforest.baseuri"の値を取得しないことです。

マイapplication.properties:

spring.jpa.hibernate.ddl-auto=create 
spring.datasource.url=jdbc:mysql://localhost:3306/SampleDB 
spring.datasource.username=root 
spring.datasource.password=admin 
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect 
management.port = 9001 
apiforest.baseuri = https://api-forest/.... 
read.timeout = 10000 
connect.timeout = 10000 

マイRestConfig:

package com.crossover.techtrial.java.se.config; 


import org.springframework.beans.factory.annotation.Value; 
import org.springframework.context.annotation.Bean; 
import org.springframework.context.annotation.Configuration; 
import org.springframework.http.client.ClientHttpRequestFactory; 
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; 
import org.springframework.web.client.RestTemplate; 

// To set the configuration parameters like read timeout and connect timeout for Rest Client 
@Configuration 
public class RestConfig 
{ 
    @Bean 
    public RestTemplate createRestTemplate(final ClientHttpRequestFactory clientHttpRequestFactory) 
    { 
     return new RestTemplate(clientHttpRequestFactory); 
    } 

    @Bean 
    public ClientHttpRequestFactory createClientHttpRequestFactory(@Value("${connect.timeout}") final int connectTimeout, 
      @Value("${read.timeout}") final int readTimeout) 
    { 
     HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory(); 
     factory.setConnectTimeout(connectTimeout); 
     factory.setReadTimeout(readTimeout); 
     return factory; 
    } 
} 

私のpom.xml:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.crossover.techtrial.java.se</groupId> 
    <artifactId>trial</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>trial</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.3.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</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-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>mysql</groupId> 
      <artifactId>mysql-connector-java</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-thymeleaf</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-actuator</artifactId> 
     </dependency> 

    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

任意のアイデア?

編集:私は@Lukeが、このことによって提案されたものに私の呼び出し元のコードを変更:

org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'createRestTemplate' defined in class path resource [com/crossover/techtrial/java/se/config/RestConfig.class]: Unsatisfied dependency expressed through method 'createRestTemplate' parameter 0; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'createClientHttpRequestFactory' defined in class path resource [com/crossover/techtrial/java/se/config/RestConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.http.client.ClientHttpRequestFactory]: Factory method 'createClientHttpRequestFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:749) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:467) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1134) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1028) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:197) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:759) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:866) ~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:542) ~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.boot.context.embedded.EmbeddedWebApplicationContext.refresh(EmbeddedWebApplicationContext.java:122) ~[spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:761) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:371) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:315) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1186) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at org.springframework.boot.SpringApplication.run(SpringApplication.java:1175) [spring-boot-1.4.3.RELEASE.jar:1.4.3.RELEASE] 
    at com.crossover.techtrial.java.se.TrialApplication.main(TrialApplication.java:21) [classes/:na] 
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'createClientHttpRequestFactory' defined in class path resource [com/crossover/techtrial/java/se/config/RestConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.http.client.ClientHttpRequestFactory]: Factory method 'createClientHttpRequestFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:599) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1134) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1028) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:513) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:207) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1136) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1064) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    ... 19 common frames omitted 
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.http.client.ClientHttpRequestFactory]: Factory method 'createClientHttpRequestFactory' threw exception; nested exception is java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:189) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:588) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    ... 32 common frames omitted 
Caused by: java.lang.NoClassDefFoundError: org/apache/http/client/HttpClient 
    at com.crossover.techtrial.java.se.config.RestConfig.createClientHttpRequestFactory(RestConfig.java:25) ~[classes/:na] 
    at com.crossover.techtrial.java.se.config.RestConfig$$EnhancerBySpringCGLIB$$25eeb443.CGLIB$createClientHttpRequestFactory$1(<generated>) ~[classes/:na] 
    at com.crossover.techtrial.java.se.config.RestConfig$$EnhancerBySpringCGLIB$$25eeb443$$FastClassBySpringCGLIB$$44b4ec10.invoke(<generated>) ~[classes/:na] 
    at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:228) ~[spring-core-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:356) ~[spring-context-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    at com.crossover.techtrial.java.se.config.RestConfig$$EnhancerBySpringCGLIB$$25eeb443.createClientHttpRequestFactory(<generated>) ~[classes/:na] 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[na:1.8.0_121] 
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_121] 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[na:1.8.0_121] 
    at java.lang.reflect.Method.invoke(Unknown Source) ~[na:1.8.0_121] 
    at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:162) ~[spring-beans-4.3.5.RELEASE.jar:4.3.5.RELEASE] 
    ... 33 common frames omitted 
Caused by: java.lang.ClassNotFoundException: org.apache.http.client.HttpClient 
    at java.net.URLClassLoader.findClass(Unknown Source) ~[na:1.8.0_121] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_121] 
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source) ~[na:1.8.0_121] 
    at java.lang.ClassLoader.loadClass(Unknown Source) ~[na:1.8.0_121] 
    ... 44 common frames omitted 
+1

まず、すべてを削除し、メインクラスだけで簡単なSpringbootアプリケーションを起動しようとします。 Mainクラス( '@ SprinBootApplication'を持つクラス)が正しくありません。 – pvpkiran

+0

私はそれを試しても、私が編集で定義した例外をまだ得ています。それは私を夢中にさせている。私はそれを修正する方法を知らない。新しい質問を投稿する必要がありますか?あなたのポンポン ' org.apache.httpcomponents固定することを HTTPClientの ' – zhaider

+0

お試しください! – pvpkiran

答えて

0

。そして、この依存関係をあなたのpomに追加してください。

​​
0

@SpringBootApplication 
public class TrialApplication 
{ 
    @Value("${apiforest.baseuri}") 
    public static String baseURI; 

    public static void main(String[] args) 
    { 
     ConfigurableApplicationContext run = 
      SpringApplication.run(TrialApplication.class, args); 
     RestTemplate restTemplate = run.getBean(RestTemplate.class); 
     String url = baseURI + "/paypallets/accounts"; 
     restTemplate.getForObject(url, Account[].class); 
     System.out.println(url); 
    } 
} 

をしかし、今、私は次のいずれかがまだ見つかりClassdefNotされ、次の例外を取得しています

私は、あなたが(PropertySourcesPlaceholderConfigurerがBeanFactoryPostProcessorなので)プロパティを作成するのと同じクラスにBeanを挿入できるとは思わない。

@SpringBootApplicationであなたのメインクラスを修正あなたは

SpringBootApplication 
public class TrialApplication 
{ 
    @Value("${apiforest.baseuri}") 
    public static String baseURI; 

    public static void main(String[] args) 
    { 
     ConfigurableApplicationContext run = 
      SpringApplication.run(TrialApplication.class, args); 
     RestTemplate restTemplate = run.getBean(RestTemplate.class); 
     String url = baseURI + "/paypallets/accounts"; 
     restTemplate.getForObject(url, Account[].class); 
     System.out.println(url); 
    } 
} 

で試すことができます。しかし、私は(生産コードの間違い以外)のみの試験のために、このソリューションを使用することになり

+0

私はあなたのソリューションを試しましたが、今私はこれらの例外を得ています:編集のために元の投稿を見てください。投稿の長さがあまりにも少ないので、コメントに新しいエラーを言及する方法はわかりません。 – zhaider

関連する問題