当前位置: 首页 > news >正文

IDEA提示:java: 常量字符串过长

大家好,我是瑶山,今天聊聊java执行字符串过长的问题

起因

main方法测试一个上传人脸的请求,人脸图片使用Base64格式字符串,执行失败,提示:java: 常量字符串过长

在Java中,当你在main方法中直接使用一个字符串常量,并且这个字符串常量的长度超过了JVM默认的方法大小限制时,你可能会遇到“常量字符串过长”的错误。这个限制是编译器和JVM对于方法大小的内部限制,通常是出于性能的考虑。

方案

解决方法:

  1. 如果字符串内容可以分割,尝试将长字符串分割成多个较短的字符串,然后在运行时将它们拼接起来。

  2. 如果是在命令行参数中传递长字符串,尝试将这个字符串写入一个文件中,然后在命令行中使用@文件名的方式来引用。

  3. 可以尝试使用字符串构造器或者StringBuffer/StringBuilder来动态构建长字符串,而不是直接使用超长的字符串常量。

  4. 如果是因为编码问题导致字符串变长,检查并确保源文件的编码与编译器期望的编码一致。

  5. 如果是因为JVM参数限制导致的问题,可以尝试增加JVM的参数限制,例如通过-XX:MaxInlineSize来增加内联大小限制,或者通过-XX:MaxMethodSize来增加方法大小的限制。

因为是图片转Base64,内容过长,这里使用文件读取的方式,首先,创建face.txt,将Base64格式字符串复制进来,通过代码读取:

当然,这是因为我已经有了Base64格式字符串,另外使用源图片代码转为Base64格式也可以

    /*** 读取内容* @return String*/static String getBase64Img() {StringBuilder sbf = new StringBuilder();String filePath = "F:\\test\\java\\api\\face.txt";try {Files.lines(Paths.get(filePath)).forEach(sbf::append);} catch (IOException e) {e.printStackTrace();}return sbf.toString();}

再次执行, 成功。

ending

人的一生 必须要学会做一件事 而且要做到透彻 才不枉此生...共勉 💪。


http://www.mrgr.cn/news/17646.html

相关文章:

  • 金九银十来了,你的简历写好了么
  • js基础速成-字符串方法
  • JVM 内存参数
  • 模型 RULER情绪管理
  • 小琳Python课堂:Python性能测试利器:`timeit`和`memory_profiler`模块的使用与实践
  • MySQL——事务与存储过程(三)存储过程的使用(1)调用存储过程
  • SDIO驱动开发
  • 动手学深度学习(pytorch)学习记录23-图像卷积[学习记录]
  • 《黑神话:悟空》是用什么编程语言开发的
  • WordShield 一款轻量级且灵活的敏感词过滤库
  • 百日草花语探秘:天长地久的情感寄托与丰富内涵解析
  • 注册中心技术选型
  • 模型 U型思考法(深度思考)
  • FPGA搭建XDMA中断模式的PCIE通信架构,简单读写测试,提供7套工程源码和技术支持
  • 华为OD机试真题 - 跳马 - 广度优先搜索BFS(Python/JS/C/C++ 2024 D卷 200分)
  • C++手撕简易list
  • 为基于物联网的监测应用构建边缘云连续体架构
  • 基于CloudflareSpeedTest项目实现git clone加速
  • k8s相关技术栈
  • 问:JAVA中的强、软、弱、虚引用的特点和差异是什么?