我尝试在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);
}
}
我想我的pom或procfile中有问题,或者我可能是错的...有人看到我的错误了吗?
1条答案
按热度按时间6tqwzwtp1#
我不熟悉这个但是:
1.尝试下一个proc文件:
web: java -jar target/dependency/webapp-runner.jar target/*.war --port $PORT
1.上传之前,请不要忘记使用以下命令构建项目:
mvn package
个1.你确定你的
$JAVA_OPTS
变量吗?在某些情况下,开发者应该使用它的不同变体:_JAVA_OPTIONS
、JAVA_TOOL_OPTIONS
。如果JAVA_OPTS
适用于您的情况,则它的设置是否正确?我敢打赌你的问题出在procfile中。