添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

您现在的位置是: 网站首页 > 心得技巧 > 编程技巧 编程技巧

【原】 阿里云oss上传文件,报错“java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException”

2019-09-22 围观( ) 评论( ) 点赞( ) 编程技巧

简介: 之前一直使用七牛云,好用贵好用,但是它不提供目录分级的功能,着实是让我感到麻烦,为了表示目录层级,还必须将文件命名为带层级结构的,今天换阿里云oss体验了一把,分分钟报错“java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException”

之前一直使用七牛云,好用归好用,但是它不提供目录分级的功能,着实是让我感到麻烦,为了表示目录层级,还必须将文件命名为带层级结构的,就去体验了一把阿里云oss,结果却分分钟报错:

Exception in thread "main" java.lang.NoClassDefFoundError: org/jdom/input/JDOMParseException
	at com.aliyun.oss.internal.OSSObjectOperation.putObject(OSSObjectOperation.java:130)
	at com.aliyun.oss.OSSClient.putObject(OSSClient.java:494)
	at com.aliyun.oss.OSSClient.putObject(OSSClient.java:478)
	at com.aliyun.oss.OSSClient.putObject(OSSClient.java:472)
	at com.wolffy.util.OssUtil.upload(OssUtil.java:49)
	at com.wolffy.util.OssUtil.main(OssUtil.java:131)
Caused by: java.lang.ClassNotFoundException: org.jdom.input.JDOMParseException
	at java.net.URLClassLoader.findClass(URLClassLoader.java:382)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
	at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
	at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
	... 6 more

竟然是jdom报错了,这还是我之前做xml解析的时候引入的jar包,偷了个懒,没有直接去官网找文档,去百度查了一下,发现是因为我本机的jdom版本太高, 阿里云oss只能使用1.x的jdom版本 。。。

WTF,简直不能理解这是什么骚操作,吐槽过后,将jar包改为低版本的,问题还真的就解决了~

<!-- jdom,阿里云OSS只能使用1.1.x版本 -->
<dependency>
    <groupId>org.jdom</groupId>
    <artifactId>jdom</artifactId>
    <!--<version>2.0.2</version>-->
    <version>1.1.3</version>
</dependency>

我自己写的一个简易demo,有需要的可以拿去参考一下:

package com.wolffy.util;
import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.net.URL;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.exception.ExceptionUtils;
 * 阿里云OSS工具类,https://www.alibabacloud.com/help/zh/doc-detail/32013.htm
 * @author SongFei
 * @date 2019/9/20 22:13
@Setter
@Slf4j
public class OssUtil {
     * Region信息,就是你选择的地步分布,如:上海、杭州
    private String endpoint = "http://oss-cn-shanghai.aliyuncs.com";
     * 密钥ID
    private String accessKeyId = "你的accessKeyId";
     * 加密钥匙
    private String accessKeySecret = "你的accessKeySecret";
     * 存储桶
    private String bucketName = "你的bucketName";
     * 创建存储桶
    public void createBucket() {
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 创建存储空间。
            ossClient.createBucket(bucketName);
            // 关闭OSSClient。
            ossClient.shutdown();
        } catch (Exception e) {
            log.error("创建bucket失败:{}", ExceptionUtils.getStackTrace(e));
            e.printStackTrace();
     * 上传本地文件至OSS
     * @param filePath 文件路径
     * @param key      唯一key(在oss中的文件名字)
    public void upload(String filePath, String key) {
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传内容到指定的存储空间(bucketName)并保存为指定的文件名称(key)。
            // String content = "Hello OSS";
            // ossClient.putObject(bucketName, key, new ByteArrayInputStream(content.getBytes()));
            ossClient.putObject(bucketName, key, new FileInputStream(new File(filePath)));
            // 关闭OSSClient。
            ossClient.shutdown();
        } catch (Exception e) {
            log.error("上传文件失败:{}", ExceptionUtils.getStackTrace(e));
            e.printStackTrace();
     * 上传文件,以IO流方式
     * @param inputStream 输入流
     * @param key         唯一key(在oss中的文件名字)
    public void upload(InputStream inputStream, String key) {
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传内容到指定的存储空间(bucketName)并保存为指定的文件名称(key)。
            // String content = "Hello OSS";
            // ossClient.putObject(bucketName, key, new ByteArrayInputStream(content.getBytes()));
            ossClient.putObject(bucketName, key, inputStream);
            // 关闭OSSClient。
            ossClient.shutdown();
        } catch (Exception e) {
            log.error("上传文件失败:{}", ExceptionUtils.getStackTrace(e));
            e.printStackTrace();
     * 上传本地文件至OSS
     * @param file 文件
     * @param key  唯一key(在oss中的文件名字)
    public void upload(File file, String key) {
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传内容到指定的存储空间(bucketName)并保存为指定的文件名称(key)。
            // String content = "Hello OSS";
            // ossClient.putObject(bucketName, key, new ByteArrayInputStream(content.getBytes()));
            ossClient.putObject(bucketName, key, new FileInputStream(file));
            // 关闭OSSClient。
            ossClient.shutdown();
        } catch (Exception e) {
            log.error("上传文件失败:{}", ExceptionUtils.getStackTrace(e));
            e.printStackTrace();
     * 上传网络文件至OSS
     * @param url 文件url,如:http://www.baidu.com/xxx.jpg
     * @param key 唯一key(在oss中的文件名字)
    public void uploadNetwork(String url, String key) {
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 上传网络流。
            InputStream inputStream = new URL(url).openStream();
            ossClient.putObject(bucketName, key, inputStream);
            // 关闭OSSClient。
            ossClient.shutdown();
        } catch (Exception e) {
            log.error("上传网络文件失败:{}", ExceptionUtils.getStackTrace(e));
            e.printStackTrace();
     * 删除OSS中的文件
     * @param key 唯一key(在oss中的文件名字)
    public void delete(String key) {
        try {
            // 创建OSSClient实例。
            OSS ossClient = new OSSClientBuilder().build(endpoint, accessKeyId, accessKeySecret);
            // 删除文件。
            ossClient.deleteObject(bucketName, key);
            // 关闭OSSClient。
            ossClient.shutdown();
        } catch (Exception e) {
            log.error("删除文件失败:{}", ExceptionUtils.getStackTrace(e));
            e.printStackTrace();
            

看完文章,有任何疑问,请加入群聊一起交流!!!

扫码关注本站微信公众号,第一时间获取网站更新动态!

本文地址:https://www.jiweichengzhu.com/article/c314f35d662840929d22313a9bfe2214

关于转载:若站内作品和文章得到了你的青睐,欢迎各位朋友分享到个人站长或者朋友圈,但转载请注明文章出处和原文链接!

很赞哦! ()

上一篇:Navicat Premium v12.1.19破解补丁提示有病毒被系统拦截

下一篇:OSS如何上传文件到Bucket下的子目录中

  • 分享一个简单的七牛云资源上传工具类
  • 阿里云oss字体文件跨域问题解决方案
  • 阿里云OSS上传文件出错“The bucket you are attempting to access must be addressed using the specified endpoint”
  • 利用qshell批量导出七牛云中存储的图片和资源
  • IntelliJ IDEA 2024.2发布之后强推新UI,如何恢复老的经典UI界面
  • Uninstall hasn't detected folder of intelli] lDEA installation. Probablyuninstall.exe was moved from the installation folder.
  • 公众号CPS变现新宠:微赚淘客查券返利机器人,开启智能省钱赚钱新时代
  • 高返利优惠券公众号推荐
  • 返利公众号可信吗安全吗?返利机器人哪个佣金高?
  • 分享几个正版 IntelliJ IDEA 激活码(破解码、注册码),亲测可用,持续更新
  • IntelliJ IDEA 2019.3利用补丁永久破解激活教程
  • IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了
  • IntelliJ IDEA 2019.2破解激活方法(持续更新)
  • idea利用补丁永久激活失败,提示“License key is in legacy format”
  • idea激活失败,提示“Key is invalid.”
  • IntelliJ IDEA 2022.2 版本最新2099年永久激活方法,亲测可用,也可以开启新UI了。
  • 写给关注支持我的朋友和攻击我网站的人(封面针对后者)写给关注支持我的朋友和攻击我网站的人(封面针对后者)
  • java调用微信机器人SDK做个人微信的二次开发真的so easy【程序员福利】

    java调用微信机器人SDK做个人微信的二次开发真的so easy【程序员福利】

  • IntelliJ IDEA 2020.2.3永久破解激活教程,亲测可用,持续更新

    IntelliJ IDEA 2020.2.3永久破解激活教程,亲测可用,持续更新

  • 公众号查券机器人,淘客机器人免费版搭建教程分享(赚外快竟然如此简单,错过必后悔哦)

    公众号查券机器人,淘客机器人免费版搭建教程分享(赚外快竟然如此简单,错过必后悔哦)

  • 微信个人号淘客系统,淘宝客查券分佣返利系统,淘客返利查券机器人【转载】

    微信个人号淘客系统,淘宝客查券分佣返利系统,淘客返利查券机器人【转载】

  • IntelliJ IDEA 2020.3永久破解激活教程(跟紧了)

    IntelliJ IDEA 2020.3永久破解激活教程(跟紧了)

  • 微信机器人开发教程-淘客机器人解决方案整理(好东西分享)

    微信机器人开发教程-淘客机器人解决方案整理(好东西分享)

  • IntelliJ IDEA 2020.2.1永久破解激活教程(稳如老狗)

    IntelliJ IDEA 2020.2.1永久破解激活教程(稳如老狗)

  • IntelliJ IDEA 2019.2已经可以利用补丁永久破解激活了
  • IntelliJ IDEA 2019.3利用补丁永久破解激活教程
  • IntelliJ IDEA高版本最灵活的永久破解激活方法(含插件激活,时长你说了算)
  • Jetbrains全家桶基于ja-netfilter的最新破解激活详细图文教程
  • IntelliJ IDEA 2022.1永久破解激活教程(亲测可用,持续更新)
  • 分享几个正版 IntelliJ IDEA 激活码(破解码、注册码),亲测可用,持续更新
  • ja-netfilter到底需不需要mymap,2021.3.2版本激活失效?
  • 如何激活idea2022.1及以上版本中的插件(亲测可用)
  • 【史上最全】IntelliJ IDEA最新2022.1版本安装和激活视频教学(含插件)
  • IntelliJ IDEA 2022.2 版本最新2099年永久激活方法,亲测可用,也可以开启新UI了。
  • 1、本站部分资源收集于网络,若侵犯了您的合法权益,请联系我们删除;

    2、原创文章转载时请附带本站原文链接,如有违反,追究法律责任。

    优秀个人博客 | 网站地图 | 百度统计 |