在本地主机上一切正常时从Heroku获得404错误,Java应用程序

798qvoo8  于 2022-11-13  发布在  Java
关注(0)|答案(1)|浏览(131)

我尝试在Heroku上部署我的简单java应用程序。我的状态为成功(在部署中),并且它启动了。但是,当我尝试通过https://herokuprojectest.herokuapp.com/main/status访问我的控制器时,我得到HTTP状态404 -未找到。在heroku日志中,我看到以下消息:
at=info method=GET path="/main/status" host=herokuprojectest.herokuapp.com request_id=42c4069e-ceef-425b-8786-8ab4834b1b7b fwd="188.163.51.90" dyno=web.1 connect=0ms service=3ms status=404 bytes=879 protocol=https
但是当我在http://localhost:8080/main/status上尝试相同的方法时,一切正常,我得到了**{“status”:“ok”}**-来自控制器的回答。
我的pom.xml:

<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.3</version>
        <relativePath/> 
    </parent>
    <packaging>war</packaging>
    <groupId>com.example</groupId>
    <artifactId>demo</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-autoconfigure</artifactId>
            <version>2.7.1</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>package</phase>
                        <goals><goal>copy</goal></goals>
                        <configuration>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>com.heroku</groupId>
                                    <artifactId>webapp-runner</artifactId>
                                    <version>9.0.30.0</version>
                                    <destFileName>webapp-runner.jar</destFileName>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

        </plugins>
    </build>

</project>

我的过程文件:web: java $JAVA_OPTS -jar target/dependency/webapp-runner.jar --port $PORT target/*.war
我的控制器:

@RestController
@CrossOrigin(origins = "*")
@RequestMapping("/main")
public class MainController {

   @GetMapping("/status")
   public ResponseEntity<Model> getStatus(Model model, WebRequest request) {
       model.addAttribute("status", "ok");
       return ResponseEntity.ok(model);
   }

}

我想我的pomprocfile中有问题,或者我可能是错的...有人看到我的错误了吗?

6tqwzwtp

6tqwzwtp1#

我不熟悉这个但是:
1.尝试下一个proc文件:web: java -jar target/dependency/webapp-runner.jar target/*.war --port $PORT
1.上传之前,请不要忘记使用以下命令构建项目:mvn package
1.你确定你的$JAVA_OPTS变量吗?在某些情况下,开发者应该使用它的不同变体:_JAVA_OPTIONSJAVA_TOOL_OPTIONS。如果JAVA_OPTS适用于您的情况,则它的设置是否正确?
我敢打赌你的问题出在procfile中。

相关问题