当前位置: 首页 > 知识库问答 >
问题:

Spring boot web应用程序无法在Tomcat上工作-404错误

锺离伟彦
2023-03-14

注意:这里有类似的问题,但没有一个解决方案对我有效。我花了几天的时间想把它弄好。

我已经将一个WAR文件部署到Tomcat,“Tomcat Web Application Manager”显示它已经启动。当我点击web应用程序“/forecaster”时,我得到一个404错误。web应用程序在从调试器(IntelliJ)运行时工作。WAR文件名为“forecaster.WAR”,我尝试过的路径是:http://localhost:8080/forecaster/http://localhost:8080/forecaster/forecast/http://localhost:8080/forecaster/forecast/1

“catalina.sh start”输出:

Using CATALINA_BASE:   /Library/Tomecat 
Using CATALINA_HOME:   /Library/Tomecat 
Using CATALINA_TMPDIR: /Library/Tomecat/temp 
Using JRE_HOME:        /Library/Java/JavaVirtualMachines/jdk1.7.0_79.jdk/Contents/Home 
Using CLASSPATH:       /Library/Tomecat/bin/bootstrap.jar:/Library/Tomecat/bin/tomcat-juli.jar 
Tomcat started.

Build.Gradle:

buildscript {
    ext {
        springBootVersion = '1.4.3.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("org.springframework.boot:spring-boot-devtools:1.4.3.RELEASE")
        classpath("org.springframework:spring-jdbc:4.3.5.RELEASE")
    }
}

apply plugin: 'java'
apply plugin: 'org.springframework.boot'
apply plugin: 'idea'
apply plugin: 'war'

jar {
    baseName = 'forecaster'
    version = '0.0.3-SNAPSHOT'
}

sourceCompatibility = 1.7
targetCompatibility = 1.7

repositories {
    mavenCentral()
}

bootRun {
   addResources = true
}

dependencies {
    compile('org.springframework.boot:spring-boot-starter-actuator')
    compile("org.springframework.boot:spring-boot-starter-freemarker")
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-web-services')
    compile('org.springframework.boot:spring-boot-starter-jdbc')
    compile("org.springframework:spring-jdbc")
    compile("org.springframework.boot:spring-boot-devtools")
    runtime('org.postgresql:postgresql')
    compileOnly('org.projectlombok:lombok')
    providedRuntime 'org.springframework.boot:spring-boot-starter-tomcat'
    testCompile('org.springframework.boot:spring-boot-starter-test')
}

java:

package com.brian.project.forecaster;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.builder.SpringApplicationBuilder;
import org.spring
@SpringBootApplication(exclude=DataSourceAutoConfiguration.class)
public class ForecasterApplication extends SpringBootServletInitializer {

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

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

forecastController.java:

package com.brian.project.forecaster.controller;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.brian.project.forecaster.services.DatabaseRepository;
import org.springframework.stereotype.Controller;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

@Controller
public class ForecastController {

   @Autowired
   private DatabaseRepository databaseRepository;

   @RequestMapping(value = "forecast/{id}")
   public String getForecastForChain(@PathVariable Integer id, Model model) throws JsonProcessingException, IOException
   {

      model.addAttribute("futureForecastData", "Say 404 again I dare you...");
      model.addAttribute("storeName", "test store name");

      return "forecast";
   }
}

共有1个答案

商茂勋
2023-03-14

我最终遵循了这里的说明,而不是使用IntelliJ。

https://spring.io/guides/gs/spring-boot/#_run_the_application

要在本地运行应用程序,请执行以下操作:

./gradlew build && java -jar build/libs/forecaster/forecaster-0.0.3-SNAPSHOT.jar
war {
    baseName = 'forecaster'
    version = '0.0.3-SNAPSHOT'
}

然后我跑道:

./gradlew build

这将生成以下WAR文件:

build/libs/forecaster/forecaster-0.0.3-snapshot.jar

cp build/libs/forecaster/forecaster-0.0.3-SNAPSHOT.war /external-test/forecaster.war
 类似资料:
  • [见底部更新]我试图通过Tomcat启动Spring Web应用程序,但是当我在浏览器中输入urlhttp://localhost:8080/demo-mvc/时,我收到了404错误和一条消息“请求的资源[/demo-mvc/]不可用”。起初,我试图通过NetBeans部署应用程序,它说部署成功,但是在浏览器启动时,我收到了404错误。我检查了Tomcat/webapp目录,不知为什么没有找到应用

  • 我制作了Spring web应用程序示例项目。我做了所有的基本配置,基于java的配置和servlet 3.0web.xml.但在所有这些配置后,当我打网址它给我404错误。会有什么问题。有人能帮帮我吗? 网状物xml: 配置java类: 控制器: 当我试图访问这个网址 它给我404错误。虽然当我直接访问jsp页面时,它显示该页面。

  • 我的Spring Boot应用程序在本地安装的Tomcat服务器上运行良好。但是当我将相同的WAR部署到弹性豆茎并单击给定的URL时,我得到的只是404。在我的Spring Boot应用程序中没有指定的路由在这里工作。可能的原因是什么? server.port=5000

  • 我想将数据发送到一个WebService,但它没有返回一个有效的反馈,并且在字符串上显示错误。我正在使用KSOAP2。 null 对象已收集无法计算org.ksoap2.serialization.soapobject.ToString() 如果一切正常,它应该给我一个'OK',但是WebService返回一个XML(responseDump): <?XML Version=“1.0”encodi

  • 我对角和Spring非常陌生。我可能犯了一些愚蠢的错误。我有Angular Spring应用程序,它会显示登录屏幕,然后显示菜单。这在未部署时(即Angular时)可以完美运行 ng build—base href=/ 我的pom。xml 我的应用程序。单元输电系统

  • 我无法在Tomcat 6上部署Grails 2.2.4应用程序。我尝试了新安装的tomcat,甚至我的应用程序的旧版本(以前运行过)。 此异常在一分钟后引发。在tomcat启动后: 我真的不知道从哪里开始修理它-/