2017-06-18 113 views
0

错误尝试将创建春季启动一个基本的web应用程序,并需要将其在WebLogic部署12.2.1服务器获取构建春季启动项目

获得在java文件下面的2个错误

  • 无法解析类型javax.servlet.ServletContext。它从所需的.class文件间接引用
  • 无法解析类型javax.servlet.ServletException。它是间接需要的.class文件

还引用我不能到WebLogic运行时添加到应用程序

能有人帮助我对此?

下面

是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.example</groupId> 
    <artifactId>demo</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

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

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.5.4.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-actuator</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-cache</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-security</artifactId> 
     </dependency> 
     <dependency> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-starter-web</artifactId> 
       <exclusions> 
       <exclusion> 
        <groupId>org.springframework.boot</groupId> 
        <artifactId>spring-boot-starter-tomcat</artifactId> 
       </exclusion> 
       </exclusions> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-devtools</artifactId> 
      <scope>runtime</scope> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
     <plugin> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-maven-plugin</artifactId> 
     </plugin> 
     <plugin> 
     <groupId>org.apache.maven.plugins</groupId> 
     <artifactId>maven-war-plugin</artifactId> 
     <configuration> 
      <failOnMissingWebXml>false</failOnMissingWebXml> 
      <archive> 
       <manifest> 
        <addDefaultImplementationEntries>false</addDefaultImplementationEntries> 
       </manifest> 
      </archive> 
     </configuration> 
     </plugin> 
    </plugins> 
    </build> 

</project> 

及以下是java文件DemoApplication.java

import org.springframework.boot.SpringApplication; 
import org.springframework.boot.autoconfigure.SpringBootApplication; 
import org.springframework.boot.builder.SpringApplicationBuilder; 
import org.springframework.boot.web.support.SpringBootServletInitializer; 
import org.springframework.web.WebApplicationInitializer; 

@SpringBootApplication 
public class DemoApplication extends SpringBootServletInitializer implements WebApplicationInitializer{ 

public static void main(String[] args) { 
    SpringApplication.run(DemoApplication.class, args); 
} 

@Override 
    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) { 
     return builder.sources(DemoApplication.class); 
    } 

}

,而将应用程序部署到WebLogic Server,得到了如下例外

weblogic.application.ModuleException: java.lang.ClassNotFoundException: org.apache.tomcat.websocket.pojo.PojoEndpointBase 
    at weblogic.application.internal.ExtensibleModuleWrapper.start(ExtensibleModuleWrapper.java:140) 
    at weblogic.application.internal.flow.ModuleListenerInvoker.start(ModuleListenerInvoker.java:124) 
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:233) 
    at weblogic.application.internal.flow.ModuleStateDriver$3.next(ModuleStateDriver.java:228) 
    at weblogic.application.utils.StateMachineDriver.nextState(StateMachineDriver.java:45) 
    Truncated. see log file for complete stacktrace 


Caused By: java.lang.ClassNotFoundException: org.apache.tomcat.websocket.pojo.PojoEndpointBase 
    at weblogic.utils.classloaders.GenericClassLoader.findLocalClass(GenericClassLoader.java:1025) 
    at weblogic.utils.classloaders.GenericClassLoader.findClass(GenericClassLoader.java:986) 
    at weblogic.utils.classloaders.ChangeAwareClassLoader.findClass(ChangeAwareClassLoader.java:83) 
    at weblogic.utils.classloaders.GenericClassLoader.doFindClass(GenericClassLoader.java:607) 
    at weblogic.utils.classloaders.GenericClassLoader.loadClass(GenericClassLoader.java:539) 
    Truncated. see log file for complete stacktrace 
+0

只需添加这扶养' 的javax.servlet 的javax.servlet-API 3.1.0 提供 '。它只在编译时需要,它将由服务器容器提供运行时。所以,这就是为什么'提供了'被添加到pom依赖。 – harshavmb

+0

@harshavmb,感谢错误得到解决 – user1245524

+0

很高兴知道问题得到解决.. :) – harshavmb

回答

0

只需添加这依赖于你的POM

<dependency> 
    <groupId>javax.servlet</groupId> 
    <artifactId>javax.servlet-api</artifactId> 
    <version>3.1.0</version> 
    <scope>provided</scope> 
</dependency> 

它是只需要在编译的时候,它会通过在服务器容器提供的运行时。所以<scope>provided</scope>被添加到POM依赖。

请参阅this链接了解更多详情。

希望这会有所帮助!