Tc0.Springboot项目启动失败

本文讲述了在IDEA中调试Springboot项目时遇到的启动失败问题,涉及网络连接、依赖项缺失、版本不匹配、端口占用、打包错误和npm包安装问题的分析与解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题:IDEA调试Springboot项目启动失败:已与地址为 ‘‘127.0.0.1:12574’,传输: ‘套接字’’ 的目标虚拟机断开连接

一、现象描述

  • IDE(IDEA或者Eclipse)调试模式

博主使用的是IDEA 2023社区版:已与地址为 ‘‘127.0.0.1:12574’,传输: ‘套接字’’ 的目标虚拟机断开连接

或者

Disconnected from the target VM, address: ‘127.0.0.1:56065’, transport: ‘socket’

二、问题分析

网络常见问题原因:

  1. 缺少依赖项
  2. java和tomcat版本不匹配
  3. 端口占用
  4. 使用maven打包程序
  5. (重要)此问题还有可能是以下几个问题产生,导致项目运行失败。需进一步排查。

总结概括就是,检查jar包冲突与缺少的依赖项目。

三、解决方案

缺少依赖项解决方法:

首先编辑pom文件,父级依赖及spring-web启动器依赖

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <!--SpringBoot版本-->
        <version>2.6.3</version>
    </parent>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

导入依赖 ,加载maven更改。

java和tomcat版本不匹配

检查版本

java -version
javac -version
端口占用
netstat -an | grep 端口号

如有有占用,杀死相应进程

使用maven打包程序
java -jar D:\Work\Code\java\demo\target\demo-0.0.1-SNAPSHOT.jar

有些时候,idea启动不了,但是命令行可以启动

问题:Springboot项目打包出错:Please refer to XXX\target\surefire-reports for the individual test results

一、现象描述

详细提示

Please refer to D:\Work\java\demo\target\surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.

二、问题分析

出错的原因,是该项目存在一些异常错误。

三、解决方案

方法一:依次排查pom依赖项,找到项目出现了异常。

方法二:使用maven的配置来将测试错误忽略掉。

方法三: java/demo/pom.xml文件中,添加属性,并设置为true。然后刷新pom.xml。

	<properties>
		<java.version>17</java.version>
		<skipTests>true</skipTests>
	</properties>

此方法虽然可以完成打包,但是如果包还是有错,执行时还是会出错。具体参考下面的问题。

问题:Springboot项目调试出错java.lang.NoClassDefFoundError: javax/servlet/ServletRequest

一、现象描述

在上面的打包出错的时候,调试会发生如下错误:

java.lang.NoClassDefFoundError: javax/servlet/ServletRequest
	at org.springframework.web.context.support.WebApplicationContextUtils.registerWebApplicationScopes(WebApplicationContextUtils.java:195) ~[spring-web-5.3.15.jar:5.3.15]
	at org.springframework.web.context.support.WebApplicationContextUtils.registerWebApplicationScopes(WebApplicationContextUtils.java:174) ~[spring-web-5.3.15.jar:5.3.15]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.registerWebApplicationScopes(ServletWebServerApplicationContext.java:254) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.postProcessBeanFactory(ServletWebServerApplicationContext.java:140) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.boot.web.servlet.context.AnnotationConfigServletWebServerApplicationContext.postProcessBeanFactory(AnnotationConfigServletWebServerApplicationContext.java:200) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:593) ~[spring-context-6.1.1.jar:6.1.1]
	at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:753) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:455) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:323) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1342) ~[spring-boot-3.2.0.jar:3.2.0]
	at org.springframework.boot.SpringApplication.run(SpringApplication.java:1331) ~[spring-boot-3.2.0.jar:3.2.0]
	at com.example.demo.DemoApplication.main(DemoApplication.java:10) ~[classes/:na]
Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletRequest
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:641) ~[na:na]
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188) ~[na:na]
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
	... 13 common frames omitted

二、问题分析

即使使用上面的方法打包成功,执行时仍然会报这个错。

此错误原始意思时jvm运行找不到这个类。

三、解决方案

编译时缺少或者运行时缺少,运行缺少主要可能是配置不对。

使用maven分析依赖关系。查看具体冲突的依赖。

<dependency>
  <groupId>javax.servlet</groupId>
  <artifactId>javax.servlet-api</artifactId>
  <version>3.1.0</version>
</dependency>

问题:Springboot项目maven出错

一、现象描述

运行重新加载所有Maven项目,报错如下

无法解析插件 org.apache.maven.plugins:maven-site-plugin:3.12.1

尝试使用 -U 标记(强制更新快照)运行 Maven 导入

二、问题分析

不影响打包

三、解决方案

无。

问题:使用npm安装axios之后出错

一、现象描述

 ERROR  Failed to compile with 1 errors                                                                          下午1:06:04

 error  in ./node_modules/axios/lib/platform/index.js

Module parse failed: Unexpected token (5:2)

二、问题分析

这个错误也有很多情况,其中之一:npm安装了一个包,然后在导入的时候报这个语法错。

三、解决方案

npm list 查看的包名       #查看安装版本
npm view 查看的包名 version #查看最新版本
npm view 查看的包名 versions    #这个会查到npm服务器上对应查询包的版本所有信息
npm uninstall axios  #卸载安装的版本	
npm install axios@1.5.0 --save #下载对应的版本
<think>好的,我现在要解决用户的问题,关于C语言编译错误#70:“incomplete type is not allowed”。首先,我需要理解这个错误的含义以及常见原因。根据用户提供的引用资料,特别是引用[1]和[4],这个错误通常与不完整类型有关,比如数组未指定大小或者结构体未完全定义。 接下来,我应该分步骤分析可能的原因。首先,用户可能在声明数组时没有指定大小,导致编译器无法确定数组的大小,这在引用[4]中提到过。例如,如果在另一个文件中定义了数组,但在当前文件声明时没有指定大小,使用sizeof就会出错。这时候需要检查数组的声明是否正确,确保在声明时指定了大小。 然后,结构体或联合体的不完整定义也是一个常见原因。例如,如果结构体在头文件中只是前向声明而没有完整定义,在尝试访问其成员时会引发此错误。需要检查结构体的定义是否完整,特别是在多个文件中的使用情况。 另外,用户可能在函数参数中使用了不完整类型。例如,如果函数参数是一个数组但没有指定大小,或者是指向未定义结构体的指针,这也会导致错误。需要确保所有函数参数的类型都是完整的。 此外,使用未初始化的指针或动态内存分配错误也可能导致这个问题。虽然引用中没有直接提到,但作为常见错误,可能需要考虑。例如,使用malloc分配内存但没有正确指定类型大小,或者指针未正确初始化。 根据引用[3]中的例子,使用memset时如果数组类型不完整,sizeof操作符无法确定大小,导致错误。这时候需要确保数组在声明时已经指定了大小,或者在外部声明时正确引入大小信息。 总结可能的解决方案步骤:检查所有数组声明是否指定大小;确保结构体和联合体的完整定义;验证函数参数的类型是否完整;检查外部变量的声明是否正确引入大小。同时,参考用户提供的案例,特别是引用[4]中的情况,强调在跨文件使用时声明数组大小的重要性。 最后,生成相关问题,帮助用户进一步排查可能的相关问题,例如结构体定义错误、跨文件变量声明等。确保用户能够全面理解错误原因,并采取正确的解决步骤。</think>### C语言 error #70: incomplete type is not allowed 解决方案 **错误说明** 编译错误 `#70: incomplete type is not allowed` 表示代码中使用了**不完整类型**(incomplete type)。不完整类型指编译器无法确定该类型的具体大小或结构,常见于以下场景: --- ### 常见原因及解决方法 #### 1. **数组未指定大小** **问题示例**: ```c extern int arr[]; // 未声明数组大小 int len = sizeof(arr) / sizeof(arr[0]); // 编译器无法计算大小[^4] ``` **解决方案**: 在声明数组时明确指定大小: ```c extern int arr[10]; // 其他文件中定义的数组大小需与此一致 ``` **典型场景**:跨文件使用全局数组时,需在声明处指定大小[^4][^3]。 --- #### 2. **结构体/联合体未完全定义** **问题示例**: ```c struct MyStruct; // 前向声明(不完整类型) void func(struct MyStruct s) { // 错误:无法确定结构体大小[^2] s.member = 10; } ``` **解决方案**: 在使用前完整定义结构体: ```c struct MyStruct { int member; }; ``` **注意**:若结构体定义在头文件中,需确保所有使用该结构体的文件包含此头文件。 --- #### 3. **函数参数中使用不完整类型** **问题示例**: ```c void func(int arr[]) { // 等同于 int* arr,但若需使用sizeof会出错 int size = sizeof(arr); // 错误:返回指针大小而非数组大小 } ``` **解决方案**: 显式传递数组大小参数: ```c void func(int arr[], int size) { // 通过size参数操作数组 } ``` --- #### 4. **动态内存分配错误** **问题示例**: ```c struct Data* ptr = malloc(sizeof(struct Data)); // Data未定义时出错[^1] ``` **解决方案**: 先定义结构体再分配内存: ```c struct Data { int value; }; struct Data* ptr = malloc(sizeof(struct Data)); ``` --- ### 排查步骤 1. **检查数组声明**:确保所有数组在声明时指定大小(包括`extern`声明)。 2. **验证结构体定义**:检查是否在使用前完整定义了结构体/联合体。 3. **检查函数参数类型**:避免传递不完整类型的参数。 4. **查看动态内存分配**:确保类型已完整定义后再使用`sizeof`。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

道格拉斯范朋克

播种花生牛奶自留田

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值