2015-09-25 50 views
0

我有一个Spring Boot休息服务。最近,我已将其更新为Discovery Client,以利用Spring云提供的自动发现和路由。当它从STS运行时,该服务正常工作。但是,当我将它部署到外部TC服务器时,它不会在catalina日志中抛出以下错误。Spring Boot EurekaClient应用程序无法在外部TC服务器上工作

24-Sep-2015 04:42:49.945 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.startInternal Error during ServletContainerInitializer processing 
javax.servlet.ServletException: Failed to instantiate WebApplicationInitializer class 
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:160) 
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5479) 
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) 
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) 
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) 
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:649) 
    at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1083) 
    at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1880) 
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:483) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:274) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1177) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) 
    at java.lang.Thread.run(Thread.java:795) 
Caused by: java.lang.NoClassDefFoundError: org.glassfish.jersey.server.ResourceConfig 
    at java.lang.J9VMInternals.verifyImpl(Native Method) 
    at java.lang.J9VMInternals.verify(J9VMInternals.java:94) 
    at java.lang.J9VMInternals.initialize(J9VMInternals.java:169) 
    at java.lang.J9VMInternals.newInstanceImpl(Native Method) 
    at java.lang.Class.newInstance(Class.java:1712) 
    at org.springframework.web.SpringServletContainerInitializer.onStartup(SpringServletContainerInitializer.java:157) 
    ... 12 more 
Caused by: java.lang.ClassNotFoundException: org.glassfish.jersey.server.ResourceConfig 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720) 
    at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571) 
    ... 18 more 

我有下面的相关内容在与此相关的

<parent> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-parent</artifactId> 
    <version>1.2.1.RELEASE</version> 
    <relativePath /> <!-- lookup parent from repository --> 
</parent> 
. 
. 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-tomcat</artifactId> 
    <scope>provided</scope> 
</dependency> 
<!-- For Eureka dependency --> 
<dependency> 
    <groupId>org.springframework.boot</groupId> 
    <artifactId>spring-boot-starter-actuator</artifactId> 
</dependency> 
<dependency> 
    <groupId>org.springframework.cloud</groupId> 
    <artifactId>spring-cloud-starter-eureka</artifactId> 
    <version>1.0.3.RELEASE</version> 
    </dependency> 
<!-- End of Eureka dependency --> 

我已经尝试添加下面depency also.But,没有运气POM。请建议。

<dependency> 
    <groupId>com.sun.jersey</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>1.11</version> 
</dependency> 

编辑: 应用类

@SpringBootApplication 
@EnableDiscoveryClient 
public class Application { 
public static void main(String[] args) { 
     SpringApplication app = new SpringApplication(Application.class); 
     app.run(args); 
    } 
} 

控制器实现

@RestController 
@RequestMapping("/api") 
public class ResourceController { 
@RequestMapping(value="/test", method = RequestMethod.GET) 
    public String test(){ 
     return "Service is Alive"; 
    } 
} 

回答

0

这样的错误大多是导致这两种情况下: -

a) Respective library is missing 
b) The version of library is old and do not hold respective implementation needed. 
c) There is more than one version of library available in classpath and app gets stuck in deciding which to use. 

在你case声明说“org.glassfish.jersey.server.ResourceConfig”,所以你应该包括项目“org.glassfish.jersey”中的一个。请试试这个: -

<dependency> 
    <groupId>org.glassfish.jersey.core</groupId> 
    <artifactId>jersey-server</artifactId> 
    <version>2.22</version> 
</dependency> 
+0

感谢您的回应。我刚刚尝试过,但没有奏效! :( – Babun

+0

你可以解压你刚刚构建的战争,看看这个库是否与它打包在一起,并检查TC库的路径以查看这个库的状态!!! – Avis

+0

是的,库在那里,应用程序运行时没有任何但是,我仍然无法从其他网址获得回应,因此投掷了404. – Babun

相关问题