我正在Spring中进行一些测试,并在尝试构建简单的REST API时遇到问题。这个环境非常简单,但我希望能够在Tomcat和Spring Boot中执行两种部署方法。未找到春天宁静的服务。 NoClassDefFound与SpringBoot集成时
在我的主要项目中,我创建了这个类:
package springTest.tomcat;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class SpringTest {
@RequestMapping(value="/greeting",method=RequestMethod.GET)
public String greeting(@RequestParam(value="name",required=true) String name){
return "Hello "+name;
}
}
我创建了一个应用程序的context.xml具有以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="controller" class="springTest.tomcat.SpringTest" />
</beans>
我的应用程序有DynamicWebProject小,所以我出口springTest.war到tomcat 8并启动它,运行在9090端口上。
然后导航到localhost:9090/springTest/greeting?name = Aaron,但是我得到了404错误河
然后我试图创建另一个项目,当我尝试执行此这将封装以前的项目作为春季启动应用程序
这个新项目的唯一内容如下
package springTest.Boot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
@Configuration
@EnableAutoConfiguration
@ComponentScan
public class SpringTest {
public static void main(String[] args){
SpringApplication.run(SpringTest.class, args);
}
@Bean
public springTest.tomcat.SpringTest springTest(){
return new springTest.tomcat.SpringTest();
}
}
但是我得到以下堆栈跟踪:
Exception in thread "main" java.lang.NoClassDefFoundError: org/springframework/core/OrderComparator$OrderSourceProvider
at org.springframework.context.support.GenericApplicationContext.<init>(GenericApplicationContext.java:101)
at org.springframework.context.annotation.AnnotationConfigApplicationContext.<init>(AnnotationConfigApplicationContext.java:60)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at java.lang.Class.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiate(BeanUtils.java:78)
at org.springframework.boot.SpringApplication.createApplicationContext(SpringApplication.java:528)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:292)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:952)
at org.springframework.boot.SpringApplication.run(SpringApplication.java:941)
at springTest.Boot.SpringTest.main(SpringTest.java:14)
Caused by: java.lang.ClassNotFoundException: org.springframework.core.OrderComparator$OrderSourceProvider
at java.net.URLClassLoader$1.run(Unknown Source)
at java.net.URLClassLoader$1.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
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)
... 13 more
这里是我的核心应用
的pom.xml<properties>
<spring.core.version>4.0.6.RELEASE</spring.core.version>
<spring.web.version>4.1.0.RELEASE</spring.web.version>
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source />
<target />
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.core.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.web.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.web.version}</version>
</dependency>
</dependencies>
而对于我的春天启动应用程序
<properties>
<spring.boot.version>1.1.4.RELEASE</spring.boot.version>
</properties>
<build>
<sourceDirectory>src</sourceDirectory>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>1.1.7.RELEASE</version>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source />
<target />
</configuration>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-amqp</artifactId>
<version>${spring.boot.version}</version>
</dependency>
<dependency>
<groupId>SpringTest_Tomcat</groupId>
<artifactId>SpringTest_Tomcat</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
</dependencies>
TL pom.xml中;博士
基本上是: 如果我让Spring应用程序,并从Tomcat中运行我不断收到404的为我的REST通话。
如果我在SpringBoot applicaction封装它,我得到一个弹簧类是存在的依赖关系的NoClassDefFoundError的...包含代码
回购: https://github.com/mangusbrother/SpringTests
你明显处于依赖洞中,只是试图让自己离开那里。 – Jaiwo99 2014-09-29 15:27:59
减少了依赖关系,只有需要。仍然遇到同样的问题。 – Maxwell 2014-09-29 15:48:54
呵呵。我不相信你 – Jaiwo99 2014-09-29 15:51:58