1. 程式人生 > >Springboot打jar包訪問不了jsp頁面報404錯誤

Springboot打jar包訪問不了jsp頁面報404錯誤

遇到的問題1:springboot專案打jar包後,訪問專案包404錯誤

解決辦法:

1.在pom裡新增一下內容,注意springboot外掛版本只能是1.4.2.RELEASE

<build>
		<finalName>test</finalName>
		<plugins>
        	<!-- 指定編譯java版本 -->
        	 <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin> 
            <!-- mvn jar 打包 -->
            <plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<version>1.4.2.RELEASE</version>
                <configuration>
                <!-- 啟動類 -->
					<mainClass>com.ServerStart</mainClass>  
				</configuration>
				<executions>
					<execution>
						<goals>
						<goal>repackage</goal>
						</goals>
					</execution>
				</executions>
				<dependencies>
                    <!-- spring熱部署 -->
                    <dependency>
                        <groupId>org.springframework</groupId>
                        <artifactId>springloaded</artifactId>
                        <version>1.2.6.RELEASE</version>
                    </dependency>
                </dependencies>
			</plugin>
	        <!-- 忽略無web.xml警告 -->
           <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml>
                </configuration>
            </plugin> 
           
        </plugins>
		
		<resources>
			<resource>
			<!-- 包含mybatis對映檔案 -->
				<directory>src/main/java</directory>
				<includes>
					<include>**/*.xml</include>
				</includes>
			</resource>
			<resource>
               <directory>${basedir}/src/main/webapp</directory>
                  <!-- 注意此次必須要放在此目錄下才能被訪問到 -->
               <targetPath>META-INF/resources</targetPath> 
               <includes>
                   <include>**/**</include>
               </includes>
           </resource>
           <resource>
		      <directory>${basedir}/src/main/resources</directory>
		      <includes>
		         <include>**/**</include>
		      </includes>
		       <filtering>false</filtering> 
		   </resource>
          
		</resources>
	</build>

2.不可缺少的jar包依賴檔案

	<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		   <dependency>
            <groupId>org.apache.tomcat.embed</groupId>
            <artifactId>tomcat-embed-jasper</artifactId>
        </dependency>

打完jar後在啟動jar包時報如下錯誤:請看看pom檔案中有沒有servlet-api(如下依賴檔案)的jar包,如果有請刪除掉,然後在打jar包就可以訪問到jsp頁面了

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

java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
        at java.util.concurrent.FutureTask.report(FutureTask.java:122)
        at java.util.concurrent.FutureTask.get(FutureTask.java:192)
        at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:939)
        at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:872)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1419)
        at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1409)
        at java.util.concurrent.FutureTask.run(FutureTask.java:266)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
        at java.lang.Thread.run(Thread.java:745)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        ... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [Pipeline[StandardEngine[Tomcat].StandardHost[localhost].TomcatEmbeddedContext[]]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5099)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 6 more
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.authenticator.NonLoginAuthenticator[]]
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:167)
        at org.apache.catalina.core.StandardPipeline.startInternal(StandardPipeline.java:170)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 8 more
Caused by: java.lang.NoSuchMethodError: javax.servlet.ServletContext.getVirtualServerName()Ljava/lang/String;
        at org.apache.catalina.authenticator.AuthenticatorBase.startInternal(AuthenticatorBase.java:1137)
        at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
        ... 10 more