问题1:关于日期类异常
Exception in thread "main" java.time.DateTimeException: Invalid value for MonthOfYear (valid values 1 - 12): 0
at java.base/java.time.temporal.ValueRange.checkValidValue(ValueRange.java:319)
at java.base/java.time.temporal.ChronoField.checkValidValue(ChronoField.java:718)
at java.base/java.time.LocalDate.of(LocalDate.java:273)
at java.base/java.time.LocalDateTime.of(LocalDateTime.java:338)
at org.springframework.boot.loader.jar.CentralDirectoryFileHeader.decodeMsDosFormatDateTime(CentralDirectoryFileHeader.java:127)
at org.springframework.boot.loader.jar.CentralDirectoryFileHeader.getTime(CentralDirectoryFileHeader.java:116)
at org.springframework.boot.loader.jar.JarEntry.<init>(JarEntry.java:58)
at org.springframework.boot.loader.jar.JarFileEntries.getEntry(JarFileEntries.java:316)
at org.springframework.boot.loader.jar.JarFileEntries.access$400(JarFileEntries.java:48)
at org.springframework.boot.loader.jar.JarFileEntries$EntryIterator.next(JarFileEntries.java:366)
at org.springframework.boot.loader.jar.JarFileEntries$EntryIterator.next(JarFileEntries.java:350)
at org.springframework.boot.loader.jar.JarFile$2.nextElement(JarFile.java:200)
at org.springframework.boot.loader.jar.JarFile$2.nextElement(JarFile.java:191)
at org.springframework.boot.loader.archive.JarFileArchive$EntryIterator.next(JarFileArchive.java:183)
at org.springframework.boot.loader.archive.JarFileArchive$EntryIterator.next(JarFileArchive.java:168)
at org.springframework.boot.loader.archive.JarFileArchive.getNestedArchives(JarFileArchive.java:84)
at org.springframework.boot.loader.ExecutableArchiveLauncher.getClassPathArchives(ExecutableArchiveLauncher.java:68)
at org.springframework.boot.loader.Launcher.launch(Launcher.java:49)
at org.springframework.boot.loader.JarLauncher.main(JarLauncher.java:51)
解决方法:
- 本地正常运行,打包后运行报错
- 修改springbootmaven插件版本
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<version>3.3.2</version>
问题2:端口被jvm占用
当遇到“Web server failed to start. Port 8089 was already in use.”这样的错误时,确实需要采取措施来解决端口冲突问题
解决方案:
管理员权限运行cmd
netstat -aon | findstr :8089
- 运行上面命令 8089改为你被占用的端口号
- 查询该端口占用的pid
- 用任务管理器kill掉
3.
问题描述:
[ERROR] Command execution failed.
org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1)
at org.apache.commons.exec.DefaultExecutor.executeInternal (DefaultExecutor.java:355)
at org.apache.commons.exec.DefaultExecutor.execute (DefaultExecutor.java:253)
at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:886)
at org.codehaus.mojo.exec.ExecMojo.executeCommandLine (ExecMojo.java:846)
at org.codehaus.mojo.exec.ExecMojo.execute (ExecMojo.java:449)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:126)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:328)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:316)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:212)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:174)
at org.apache.maven.lifecycle.internal.MojoExecutor.access$000 (MojoExecutor.java:75)
at org.apache.maven.lifecycle.internal.MojoExecutor$1.run (MojoExecutor.java:162)
at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute (DefaultMojosExecutionStrategy.java:39)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:159)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:105)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:73)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:53)
这个错误堆栈信息来自于 Maven 在执行一个 exec-maven-plugin 插件时遇到的失败。org.apache.commons.exec.ExecuteException: Process exited with an error: 1 (Exit value: 1) 表明被执行的外部进程或命令以退出码 1 结束,这通常表示出现了某种错误。
解决:
1.检查 Maven 配置:
查看你的 pom.xml 文件中 exec-maven-plugin 的配置。确保 executable 或 commandlineArgs 等属性设置正确。
2.确认你正在尝试执行的命令或程序是否在你的系统上可用,并且路径正确。
查看命令行输出
通常,当 Maven 插件执行时,它会在控制台输出被执行命令的输出。检查这些输出以获取可能的错误信息或更详细的失败原因。
问题4:Unsupported class file major version 61
- 问题描述:
错误 “Unsupported class file major version 61” 通常出现在使用 Java 编译器(如 javac)编译的 Java 字节码文件(.class 文件)被 Java 虚拟机(JVM)运行时环境以不兼容的版本加载时。这里的 “major version 61” 指的是 Java 17 编译的类文件版本。
这个错误表明你尝试在一个低于 Java 17 的 JVM 上运行一个用 Java 17 编译的 Java 应用程序
解决方案:
1.大概是JDK和Spring版本不对应,检查对应关系,springboot3至少要jdk17
2.更改项目结构中的 SDK 的版本为 jdk-17。
方案2引用csdn大培草民的回答
更改项目目录下 pom.xml 中的属性配置,将原先的 21 更改为 17。
最后重新加载所有 Maven 项目。
问题5:Unable to find main class
- 问题描述:遇到“Unable to find main class”这个错误时,这通常意味着Maven在尝试执行某个任务(如运行Java应用程序或打包成可执行jar)时,没有找到指定的主类(main class)
<configuration>
<mainClass>com.yourcompany.YourApplication</mainClass>
</configuration>
解决方案:
可以在插件配置中手动指定主类
问题6:无法解析符号 ‘DateUtil’
import cn.hutool.core.date.DateUtil;
- 问题描述:当你遇到“无法解析符号 ‘DateUtil’”这样的错误时,通常意味着你的项目中缺少包含 DateUtil 类的库,或者该库没有被正确地添加到项目的依赖中。DateUtil 是 Hutool 工具包中的一个类,用于处理日期和时间。
解决方案:
1.确保你的项目中已经包含了 Hutool 的依赖。对于 Maven 项目,你需要在 pom.xml 文件中添加 Hutool 的依赖
2.解决依赖之间的冲突问题就行
问题7:httpclient :4.5.12 [compile](omitted for conflict with: 4.5.13
- 问题描述:httpclient:4.5.12 [compile] (omitted for conflict with: 4.5.13) 表示在你的项目中,原本指定了 httpclient 库的版本为 4.5.12 作为编译依赖,但 Maven 在解析依赖时发现了冲突,即项目中其他地方(可能是直接依赖或间接依赖)已经引入了 httpclient 的 4.5.13 版本。
Maven 会根据依赖管理规则(通常是“最近者优先”原则)来解决这种冲突,因此它会选择版本更高的 4.5.13,并忽略 4.5.12 版本。这就是为什么你会看到 omitted for conflict with: 4.5.13 的信息。
解决方案:
在冲突的依赖添加配置:
<exclusions>
<exclusion>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
</exclusion>
</exclusions>
问题8:java: java.lang.NoSuchFieldError: Class com.sun.tools.javac.tree.JCTree$JCImport does not have member field ‘com.sun.tools.javac.tree.JCTree qualid’
- 问题描述:错误表明 Java 运行时环境在尝试访问某个类的字段时,未能找到该字段。在你提供的错误中,错误发生在尝试访问 com.sun.tools.javac.tree.JCTree$JCImport 类的 qualid 字段时
API 变更:com.sun.tools.javac 是 JDK 的一部分,但它并不是 Java 官方 API 的一部分。这意味着它的内部结构和字段可能会随着 JDK 版本的更新而改变。你很可能在使用的 JDK 版本中,JCImport 类已经不再包含 qualid 字段。
错误的库或代码:你可能在使用一个依赖于特定 JDK 版本内部 API 的库或代码,而你的项目使用的 JDK 版本与该库或代码不兼容。
编译时与运行时环境不一致:你的代码可能在不同于运行时的 JDK 版本上编译。这可能导致编译时存在的字段在运行时环境中不存在。
解决方案:
依赖版本太低导致的,因为新版jdk改动了该类
文末:
- 还有更多问题,但是很难一一列出,只提供解决思路,具体解决需要大家自己花时间。