Java mail包出现"MimeMessage contains object of type javax.mail.util.SharedByteArrayInputStream instead of MimeMultipart"错误的修正办法

IDEA 2024.1新版本踩坑记:GitLab插件强制Token登录?手把手教你禁用并恢复账号密码登录 本文详细解析了IDEA 2024.1版本中GitLab插件强制Token登录的问题,并提供了三种实用解决方案:禁用插件、降级插件版本或升级GitLab服务端。针对不同场景,帮助开发者快速恢复账号密码登录,确保开发流程顺畅。 阅读详情

这个问题曾出现于本人制作的java mail应用程序部署中。在IDE中未出现任何问题,只是在打包部署时(我是将java mail的所有class文件与我开发的程序一同打到jar中便于部署),一发mail就在Transport.send()时报此异常。

这个问题,直译的解释是,在发送邮件时,MimeMessage中包含的对象是javax.mail.util.SharedByteArrayInputStream,而不是MimeMultipart。但是就算收到的邮件原封不动地发出去,也还是会报同样的错,而且在IDE里面没问题,打成jar包运行就报错。于是便猜想,应该是环境问题。上网搜这个报错,国内的论坛、网站上,根本找不到对这一错误地解决办法描述,后来在一英文论坛上,发现了端倪。

原来,java mail这个工具包的那个jar,有很多引用到的文件,并没有放到class文件的文件夹下,而是放到了jar文件的META-INF文件夹下,其中就有很重要的mailcap文件。这个文件是用来parse MimeMessage用的,没有了这个文件,message就不会被parse成MimeMultipart,而是会直接以字节流的方式交给Transport类来发送。而Transport类不能发送字节流内容。

在我的这个case里面,由于我是把java mail的class文件直接加到我的jar包中,所以java mail的jar文件中的META-INF的内容就被丢弃了。解决方法很简单,转而将我自己写的程序的包、class文件打到java mail的jar里面,然后在MANIFEST.MF的第二行里面指明自己的主类就可以了。(加入Main-Class: XXXX.XXXX就可以了)

写一个b站爬虫(思路) part 0 安装 scrapy, requests part 1 信息获取 打开番剧索引链接(https://www.bilibili.com/anime/index/) F12控制台,选中NETWORK,来到xhr文件,我们可以找到了存放番剧json的地方 阅读详情

相关推荐

Workbench中直接调用ICEM CFD进行网格划分

自从ANSYS 12.0之后,ICEM CFD就从Workbench中被分离出去,作为一个独立的程序使用了。取而代之的是Meshing模块。 在Meshing的属性节点菜单中右键点击Mesh,选择Insert > Method,插入方法。 选择需要划分网格的几何体,点击apply。此时Geometry显示为1 Body。 设置Method为MultiZone,如果不设置成这个的话,找不到进入ICEM CFD的入口。如果要划分四面体,可以在Mapped Mesh Type中选择其他类型。

Yan的博客 6509

Java I/O(三)文件I/O

Java文件I/O 字节流 字符流 输入流 输出流

yunyun1886358的专栏 2万+

ARM和FPGA之间的通信(硬件原理图篇)

设计该开发板的初衷是为了学习,但也希望今后能扩展其功能,看到大家都在diy示波器,自己也非常冲动的想DIY一把,于是呼选了arm+fpga的方案,fpga主要用来实现数据的高速采样,而ARM则提供数据的显示,以及一些人机交互的功能。那么该方案中最重要的地方就是ARM和FPGA之间的通信如何实现了。在网上查了很多的资料,有说将FPGA作为ARM的一个外设,可以通过DMA的方式来直接访问;也有说把FP

屌yy的博客 5万+

SharedByteArrayInputStream 本不该出现的异常

近日在用 JavaMail 编写发送 E-mail 的应用,在一段十分普通的 Java 代码中出现了如下的一段异常:DEBUG: setDebug: JavaMail version 1.3.2Exception in thread "Main Thread" java.lang.NoClassDefFoundError: com/sun/mail/util/SharedByteArrayInpu

Change is Constant 9756

深入解析CRC16查表法:从原理到Modbus协议实践

本文深入解析了CRC16查表法的核心原理与实现,重点阐述了其“空间换时间”的优化思想。通过对比直接计算法,详细说明了查表法如何通过预计算表格将计算速度提升数十倍,并提供了完整的Modbus CRC16查表法代码生成、解析及实战避坑指南,帮助开发者在嵌入式及工业通信场景中高效实现可靠的数据校验。

weixin_29166013的博客 554

YOLO11改进|注意力机制篇|引入先验卷积注意力机制CPCA

YOLO11中添加先验卷积注意力机制CAPA

A1983Z的博客 2374

java.lang.ClassCastException: javax.mail.util.SharedByteArrayInputStream

最近在做用javamail解析邮件的项目,在解析邮件时一直报:java.lang.ClassCastException: javax.mail.util.SharedByteArrayInputStream 在百度上找了好久也没有解决办法,最后通过google在一英文网站上找到解决办法(再次事实证明,Google才是王道) 参考网址:https://java.net/projects/java

zhubo0228的专栏 1万+

汇川H5U PLC通过EtherCAT总线控制SV660N和X3E伺服

首先我们看下系统硬件和软件配置:汇川H5U PLC的编程软件是:AutoShop V4.6.3.0 硬件:PLC H5U-1614MTD-A16,汇川伺服型号:SV660NS1R6I 电机型号:MS1H1-10B30CB 100W 220V 3000R/M 0.32N*M 1.3A,禾川伺服驱动器型号:SV-X3EB075A-A2 伺服电机型号:SV-X2MH075A-N2LA。

RXXW_Dor的博客 2万+

sendEmail 工具类

java mail 抓包

qq_39816041的博客 7551

Android 9.0 SystemUI禁用长按recent键的分屏功能

​ 在9.0的系统产品开发中,系统对于多窗口模式默认会有分屏功能的,但是在某些产品中,需要禁用分屏模式,所以需要在导航栏中 禁用长按recent的分屏模式功能,接下来分析下相关分屏模式的实现 ​

安卓兼职framework和app工程师的博客 448

使用openclaw出现blocked URL fetch (url-fetch) reason=Blocked: resolves to private/internal/special 解决方案

本文主要介绍了使用openclaw出现blocked URL fetch (url-fetch) target=https://news.google.com/search reason=Blocked: resolves to private/internal/special-use IP address 解决方案,希望能对使用xx的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 11万+

解决JavaMail发邮件抛出找不到SharedByteArrayInputStream类的异常

在最近项目开发过程中,需要用到JavaMail发邮件。在Java Project下导入官方包mail.jar(截止今天的最新版是1.4.4,下载地址是:http://www.oracle.com/technetwork/java /javamail/index-138643.html),另外需要导入activation-1.1.jar,执行下面的代码,可成功发送邮件。 下面这段代码是网上找的,...

程序员最佳实践 2235

2025年新发表的语音大模型全双工模型/框架/技术

参考该论文,给出2025年新发表的全双工模型或框架或技术下面这份清单专挑、且与“全双工语音对话/同步对话(边听边说、可打断、回馈/相槌、重叠语音)”直接相关的。我也结合你提到的的四大维度(暂停处理、相槌、顺滑换手、打断管理)来点出它们各自的贡献点,便于后续评测与对比。

u013250861的博客 629

ByteArrayInputStream源码分析

转自: ByteArrayInputStream 是字节数组输入流。它继承于InputStream。 它包含一个内部缓冲区,该缓冲区包含从流中读取的字节;通俗点说,它的内部缓冲区就是一个字节数组,而ByteArrayInputStream本质就是通过字节数组来实现的。 我们都知道,InputStream通过read()向外提供接口,供它们来读取字节数据;而ByteArrayInputStre

asivy的专栏 807

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

【Java原理系列】 Java ByteArrayInputStream 原理用法源码分析

是 Java I/O 库中的一个类,它继承自抽象类。该类实现了一个字节数组输入流,即将一个字节数组作为输入源,并提供了相应的读取方法。包含一个内部的字节数组缓冲区buf,通过该缓冲区存储待读取的字节数据。pos表示当前待读取的字节在缓冲区中的位置。mark表示当前标记的位置,用于支持reset()方法。count表示缓冲区中有效的字节总数。read():从输入流中读取下一个字节的数据。返回值是一个范围在 0 到 255 之间的整数,如果已达到流的末尾,则返回 -1。

wang2leee的博客 8901

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ByteArrayInputStream和ByteArrayOutputStream

1.ByteArrayInputStream和ByteArrayOutputStream简介 ByteArrayInputStream是字节数组输入流,继承InputStream,它里面维护一个缓冲区,也就是一个byte类型的数组,通过一个计数器pos来实现对字节数组的读取。与之相对应的ByteArrayOutputStream是字节数组输出流,继承自OutputStream,它里面也维护一个缓冲...

Solar24的博客 1577

java之ByteArrayInputStream 和ByteArrayOutputStream应用

一、ByteArrayInputStream是InputStream的一个子类,它可以把一个字节数组在内存中变成一个输入流(或者说,它把数组进行了包装,数组具有了流的属性,可以顺序读下去)。 ByteArrayInputStream的主要特征:从字节数组中读取数据 ByteArrayInputStream类的构造方法: ByteArrayInputStream(byte[] buf)//通过一个字节数组buf创建一个字节输入流对象 ByteArrayInputStream(byte[] buf,int of

qq_45577911的博客 1704

bytearrayinputstream java,ByteArrayInputStream

ByteArrayInputStream ClassDefinitionNamespace:Assembly:Mono.Android.dllA specialized InputStream for reading the contents of a byte array.In this article[Android.Runtime.Register("java/io/ByteArrayInp...

weixin_29437577的博客 445

ByteArrayOutputStream和ByteArrayInputStream详解

http://www.blogjava.net/rainmanyang/articles/232045.html     ByteArrayOutputStream和ByteArrayInputStream详解 ByteArrayOutputStream类是在创建它的实例时,程序内部创建一个byte型别数组的缓冲区,然后利用ByteArrayOutputStream和ByteArray...

java-admin 517

Java_io体系之ByteArrayInputStream、ByteArrayOutputStream简介、走进源码及示例——04

Java_io体系之ByteArrayInputStream、ByteArrayOutputStream简介、走进源码及示例——04 一:ByteArrayInputStream   1、       类功能简介: 字节数组输入流:此流中内部包含一个缓存字节数组做为缓存区、该缓存字节数组中的字节组成了供ByteArrayInputStream读取到程序中的流。既然要将缓存字

Oscar Chen 4667

22.文件读写:字节流

字节流最大的特点是,每次调用read或write读入或写出的数据是以字节为单位的,而有的字符需要两个字节去存储,所以字节流读取数据会发生读到的数据不准确的情况。

c1776167012的博客 4793

Android进阶——Sharedpreferences保存对象和图片等复杂类型的数据

Sharedpreferences保存序列化的对象和图片等复杂类型的数据

最美不过,心中有梦,身旁有你! 1万+

[六]JavaIO之 ByteArrayInputStream与ByteArrayOutputStream

功能简介 ByteArrayInputStream 和 ByteArrayOutputStream 提供了针对于字符数组 byte [] 的标准的IO操作方式 ByteArrayInputStream将会给一个byte buf[] 提供标准的IO操作方式 ByteArrayOutputStream则是将数据写入到内部的字节数组中 Byte...

noteless的博客 1745

Java 8 中 ByteArrayInputStream 类源码分析

ByteArrayInputStream 类位于 java.io 包下,继承于 InputStream 类,表示字节数组输入流,它会在内存中创建一个字节数组缓冲区,然后把从输入流中读取的数据全部保存在缓冲区中。

ranxiaotop的博客 1138

内存流(字节数组流)——ByteArrayInputStream、ByteArrayOutputStream

内存流(字节数组流)——主要用于将数据写入内存或者从内存中读取数据; 我们知道,流操作主要用于读写文件或者是网络传输,而实际开发中经常遇到将数据存入磁盘的缓存操作,那么是否可以将缓存写入内存呢?因为内存的操作速度是远大于磁盘的!答案是有的,那就是内存流! 例:将字节数组写入内存 public static void main(String[] args) throws IOExcepti...

淡淡的心 5956

Java IO:ByteArrayInputStream使用详解及源码分析

1 使用方法  ByteArrayInputStream 包含一个内部缓冲区,该缓冲区包含从流中读取的字节。内部计数器跟踪 read 方法要提供的下一个字节。ByteArrayOutputStream实现了一个输出流,其中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray()和 toString()获取数据。1.1 方法介绍  ByteArrayI

ahsxsk的学习之路 2715
上一篇: Windows环境下注册Java程序为系统服务
下一篇: UNIX上自动FTP任务的脚本实现
simonjo
博客等级 码龄22年 39粉丝 63原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值