标题描述了我的问题.我现在觉得自己真的很蠢,因为这可能是一个很小的问题.
我已经被困在这件事上快两天了.我正在构建的应用程序要大得多,它使用docker compose来启动postgres容器,但这个问题可以通过创建一个新的(Java 21,Maven)Spring启动项目来重现,该项目只依赖于Spring web.在带有@SpringBootApplication的类中,添加以下内容:
@Bean
ApplicationRunner applicationRunner() {
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("hh:mm a");
return args -> {
System.out.println("Parsed: 12:30 pm -> " + LocalTime.parse("12:30 p.m.", formatter));
};
}
当我使用IntelliJ或./mvnw spring-boot:run
运行它时,或者在普通的Java类中(没有注释),它就会运行.
但是,当我使用这个docker文件时:
FROM eclipse-temurin:21-jdk-alpine
COPY . /app/
WORKDIR /app
CMD ["./mvnw", "spring-boot:run", "-Dskiptests"]
用docker build -t localtime:1.0 .
构建,然后用:docker run -p 1234:8080 --name localtime-container localtime:1.0
运行.以下是我在定期发布 spring 启动日志(log)消息后得到的信息:
Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled.
2024-02-20T06:08:00.097Z ERROR 71 --- [ main] o.s.boot.SpringApplication : Application run failed
java.time.format.DateTimeParseException: Text '12:30 p.m.' could not be parsed at index 6
at java.base/java.time.format.DateTimeFormatter.parseResolved0(DateTimeFormatter.java:2108) ~[na:na]
at java.base/java.time.format.DateTimeFormatter.parse(DateTimeFormatter.java:2010) ~[na:na]
at java.base/java.time.LocalTime.parse(LocalTime.java:473) ~[na:na]
at org.example.localtimedemo.LocaltimeDemoApplication.lambda$applicationRunner$0(LocaltimeDemoApplication.java:22) ~[classes/:na]
at org.springframework.boot.SpringApplication.lambda$callRunner$4(SpringApplication.java:786) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.util.function.ThrowingConsumer$1.acceptWithException(ThrowingConsumer.java:83) ~[spring-core-6.1.3.jar:6.1.3]
at org.springframework.util.function.ThrowingConsumer.accept(ThrowingConsumer.java:60) ~[spring-core-6.1.3.jar:6.1.3]
at org.springframework.util.function.ThrowingConsumer$1.accept(ThrowingConsumer.java:88) ~[spring-core-6.1.3.jar:6.1.3]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:798) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.callRunner(SpringApplication.java:786) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.lambda$callRunners$3(SpringApplication.java:774) ~[spring-boot-3.2.2.jar:3.2.2]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.accept(ForEachOps.java:184) ~[na:na]
at java.base/java.util.stream.SortedOps$SizedRefSortingSink.end(SortedOps.java:357) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:510) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:151) ~[na:na]
at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:174) ~[na:na]
at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234) ~[na:na]
at java.base/java.util.stream.ReferencePipeline.forEach(ReferencePipeline.java:596) ~[na:na]
at org.springframework.boot.SpringApplication.callRunners(SpringApplication.java:774) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:341) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1354) ~[spring-boot-3.2.2.jar:3.2.2]
at org.springframework.boot.SpringApplication.run(SpringApplication.java:1343) ~[spring-boot-3.2.2.jar:3.2.2]
at org.example.localtimedemo.LocaltimeDemoApplication.main(LocaltimeDemoApplication.java:15) ~[classes/:na]
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 26.863 s
[INFO] Finished at: 2024-02-20T06:08:00Z
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.springframework.boot:spring-boot-maven-plugin:3.2.2:run (default-cli) on project localtime-demo: Process terminated with exit code: 1 -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
但是,当我取消对sout语句的注释时,它运行得很好.
我试过使用不同的Dockerfiles,同样的问题.
有人知道这是怎么回事吗?知道怎么解决吗?
谢谢