SpringCloud项目中解决 line number info is not available in class 报错

本文详细介绍了在IDEA中遇到的Debug模式下无法获取行号信息的问题及其解决步骤。通过清理.class文件、重新编译项目及打包,解决了IDEA与Eclipse环境下因文件变动引起的debug异常。

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

  今天在项目运行中,想整个debug来看下数据,结果出出现了一个禁止符号,提示我line number info is not available in class的问题,图标如下,可以对比一下:

 

一、解决问题

  网上很多的帖子说我是禁用了debug,但是事实并非如此!

  我先说下我是怎么解决:

1、清理原本的.class文件

打开 【Maven菜单】,选择 对应报错项目的 【Lifecycle】,然后选择 【clean】 菜单,清理原本的target编译文件;

2、重新生成.class文件

选择IDEA最上层的【Build 】,继续选择 【Rebuild Project】,重新编译一下项目;

3、重新打包

再次选择maven打包菜单,然后这次选择 【Lifecycle】下面的【install】菜单,如果此时打开原本的编译目标文件夹的时候,可以看到原本在clean环节被删除的target目录重新建立,并生成了新编译文件了;

 

二、报错原因  

后面与同事讨论,发现出现这个是因为在IDEA在debug模式下是不能够改动文件的,改动之后会导致项目的class和java文件对不上,然后就会报上面那个错误了。

大概的原理是,原本编译后的.class文件与java文件其实是一个一一对应的关系,但是现在如果改动了文件,或者是使用的是之前的编译文件的时候,就会导致java与class不能够一一对应上,就是如title中所示的错误提示信息一样。

所以解决的思路也是让java与class保持一致即可!结合最近学习到的一个道理,解决问题不能够停留在问题层面,而是要深入到问题里面,去解决问题的根本!

 

三、Eclipse环境下解决

  eclipse的解决方法与IDEA的方法大致一样,选择顶层菜单的【Project】,然后选择【Clean】即可清理掉原本的.class文件,后面运行的时候就可以重新生成了.class文件了。

{"code":0,"message":"","data":{"device_sn":"8UUXN4300A04KQ","device_model":{"key":"3-3-0","domain":"3","type":"3","sub_type":"0","name":"DJI Dock 3","class":"airport"},"device_state":{"acc_time":2347303,"activation_time":1745264068,"air_conditioner":{"air_conditioner_state":"idle_mode","switch_time":0},"air_transfer_enable":false,"alarm_state":"disable","alternate_land_point":{"height":0,"is_configured":"already_set","latitude":29.793797160401358,"longitude":121.20805641506726,"safe_land_height":20},"backup_battery":{"switch":"enable","temperature":35.5,"voltage":13209},"battery_store_mode":"standby_mode","compatible_status":"no_consistency_upgrade_required","cover_state":"close","dongle_infos":[],"drone_battery_maintenance_info":{"batteries":[{"capacity_percent":96,"index":"left_battery","temperature":34.4,"voltage":24981}],"heat_state":"not_heating_or_preserving","maintenance_state":"no_maintenance _equired","maintenance_time_left":0},"drone_charge_state":{"capacity_percent":96,"state":"idle"},"drone_in_dock":"inside","emergency_stop_state":"disable","environment_temperature":32.2,"firmware_upgrade_status":"not_upgraded","firmware_version":"13.01.0006","first_power_on":1631945855969,"flighttask_step_code":"mission_idle","heading":-134.28248596191406,"height":284.71051025390625,"home_position_is_valid":"valid","humidity":50,"job_number":43,"latitude":29.7938073744259,"live_capacity":{"available_video_number":1,"coexist_video_number_max":3,"device_list":[{"available_video_number":1,"camera_list":[{"available_video_number":1,"camera_index":"165-0-7","coexist_video_number_max":1,"video_list":[{"switchable_video_types":["normal"],"video_index":"normal-0","video_type":"normal"}]}],"coexist_video_number_max":1,"sn":"8UUXN4300A04KQ"},{"available_video_number":0,"camera_list":[],"coexist_video_number_max":1,"sn":"1581F8HGX253E00A04AX"}]},"live_status":[],"longitude":121.20803159234505,"maintain_status":{"maintain_status_array":[{"last_maintain_time":0,"last_maintain_type":"regular_maintenance_of_dock","last_maintain_work_sorties":0,"state":"no_maintenance"},{"last_maintain_time":0,"last_maintain_type":"deep_maintenance_of_dock","last_maintain_work_sorties":0,"state":"no_maintenance"}]},"media_file_detail":{"remain_upload":0},"mode_code":"idle","network_state":{"quality":"no_signal","rate":16,"type":"ethernet"},"position_state":{"gps_number":7,"is_calibration":"calibrated","is_fixed":"fixing_successful","quality":"gear_5","rtk_number":43},"rainfall":"no_rain","rtcm_info":{"host":"120.253.226.97","mount_point":"RTCM33_GRCEJ","port":"8002","rtcm_device_type":"dock","source_type":"network_rtk_calibration"},"silent_mode":"non_silent_mode","storage":{"total":53082240,"used":0},"sub_device":{"device_model_key":"0-100-1","device_online_status":"power_off","device_paired":"paired","device_sn":"1581F8HGX253E00A04AX"},"supplement_light_state":"close","temperature":30.3,"user_experience_improvement":"refuse","wind_speed":0,"wireless_link":{"4g_freq_band":5.8,"4g_gnd_quality":0,"4g_link_state":"disconnect","4g_quality":0,"4g_uav_quality":0,"dongle_number":1,"link_workmode":"4g_fusion_mode","sdr_freq_band":2.4,"sdr_link_state":"disconnect","sdr_quality":0},"wireless_link_topo":{"center_node":{"sdr_id":1874493475,"sn":"1581F8HGX253E00A04AX"},"leaf_nodes":[{"control_source_index":0,"sdr_id":103958240,"sn":"8UUXN4300A04KQ"}],"secret_code":[0,0,0,0,1,0,0,0,62,181,72,108,86,237,252,30,245,224,114,161,230,62,65,53,228,185,133,64]},"working_current":2890,"working_voltage":47733}}} java如何获取到capacity_percent的值
最新发布
05-21
在Java中,可以通过解析JSON数据来获取`capacity_percent`的值。以下是一个完整的解决方案: --- ### 解决方案 #### 1. 使用`org.json`库解析JSON 以下是使用`org.json`库解析JSON并获取`capacity_percent`值的代码: ```java import org.json.JSONObject; public class JsonParserExample { public static void main(String[] args) { String jsonData = "{ \"code\":0, \"message\":\"\", \"data\":{ \"device_sn\":\"8UUXN4300A04KQ\", \"device_model\":{ \"key\":\"3-3-0\", \"domain\":\"3\", \"type\":\"3\", \"sub_type\":\"0\", \"name\":\"DJI Dock 3\", \"class\":\"airport\" }, \"device_state\":{ \"acc_time\":2347303, \"activation_time\":1745264068, \"drone_battery_maintenance_info\":{ \"batteries\":[ { \"capacity_percent\":96, \"index\":\"left_battery\", \"temperature\":34.4, \"voltage\":24981 } ], \"heat_state\":\"not_heating_or_preserving\", \"maintenance_state\":\"no_maintenance_equired\", \"maintenance_time_left\":0 } } } }"; // 将 JSON 字符串转换为 JSONObject JSONObject jsonObject = new JSONObject(jsonData); // 按层级逐步解析 JSONObject data = jsonObject.getJSONObject("data"); JSONObject deviceState = data.getJSONObject("device_state"); JSONObject droneBatteryMaintenanceInfo = deviceState.getJSONObject("drone_battery_maintenance_info"); JSONArray batteries = droneBatteryMaintenanceInfo.getJSONArray("batteries"); // 遍历 batteries 数组,获取 capacity_percent for (int i = 0; i < batteries.length(); i++) { JSONObject battery = batteries.getJSONObject(i); int capacityPercent = battery.getInt("capacity_percent"); System.out.println("电池 " + (i + 1) + " 的容量百分比: " + capacityPercent + "%"); } } } ``` --- ### 解释 1. **JSON 数据结构分析**: - `capacity_percent`位于`data.device_state.drone_battery_maintenance_info.batteries`数组中的每个对象内。 - 因此,需要逐层解析JSON对象,并遍历`batteries`数组。 2. **代码逻辑**: - 使用`org.json.JSONObject`类将JSON字符串解析为一个`JSONObject`对象。 - 按照JSON的层级结构,逐步获取`data`、`device_state`、`drone_battery_maintenance_info`和`batteries`。 - 遍历`batteries`数组,提取每个电池对象中的`capacity_percent`值。 3. **输出结果**: 假设输入的JSON数据如您提供,运行上述代码后会输出: ``` 电池 1 的容量百分比: 96% ``` --- ###
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值