学习 Java 报表技术导入 Maven 依赖出错:jacob 无法下载、jasperreports 依赖错误

发布时间 2023-08-24 10:21:18作者: 炸天帮帮主

发生缘由

最近在做一个可视化项目,用到了 Java 报表技术。在跟着「黑马」课程导入 pom.xml 文件的时候提示下载依赖错误。

  • com.jacob 包无法下载

  • Failed to read artifact descriptor for com.lowagie:itext:jar:2.1.7.js6

运行环境

  • 电脑系统版本:Windows 10 64bit

  • Idea:2023.2 (Ultimate Edition)

  • Maven:apache-maven-3.6.0

问题解决

解决 jacob 包问题

既然阿里云无法下载,那么直接从 GitHub 下载即可。文件也不大,才500KB,所以使用下面哪种方式都可以。

Release 下载页面jacob-1.20.zip下载链接百度网盘蓝奏云

# 将压缩包下载本地并解压
E:\JAVA\jar\jacob-1.20> dir
 驱动器 E 中的卷是 软件
 卷的序列号是 9692-5EC7

2020-09-25  06:22    <DIR>          .
2020-09-25  06:22    <DIR>          ..
2020-09-24  23:21    <DIR>          docs
2020-09-25  06:16           226,816 jacob-1.20-x64.dll
2020-09-25  06:16           189,440 jacob-1.20-x86.dll
2020-09-25  06:15            49,913 jacob.jar
2020-09-24  23:21            26,440 LICENSE.TXT
               4 个文件        492,609 字节
               3 个目录 52,337,233,920 可用字节
# 安装到 Maven 仓库中
E:\JAVA\jar\jacob-1.20>mvn install:install-file -DgroupId=com.jacob -DartifactId=jacob -Dversion=1.20 -Dpackaging=jar -Dfile=jacob.jar

解决 jasperreports 依赖

这个是重复依赖问题,只需要在导入其的时候将有影响的包排除掉即可。

<dependency>
    <groupId>net.sf.jasperreports</groupId>
    <artifactId>jasperreports</artifactId>
    <version>6.5.0</version>
    <exclusions>
        <!--
             JasperReports报表生成工具对Itext进行了封装,简化了pdf输出的过程。
             有可能导入依赖报错提示 com.lowagie:itext失败
             我们只需要排除对com.lowagie:itext:jar的读取即可
        -->
        <exclusion>
            <groupId>com.lowagie</groupId>
            <artifactId>itext</artifactId>
        </exclusion>
        <!-- 排除olap4j依赖 -->
        <exclusion>
            <groupId>org.olap4j</groupId>
            <artifactId>olap4j</artifactId>
        </exclusion>
    </exclusions>
</dependency>

最后 pom 文件

<dependencies>
    <!-- SpringBoot依赖 -->
    <!-- SpringBootWeb项目依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- SpringBoot测试依赖 -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
    </dependency>


    <!-- SpringBoot整合MyBatis -->
    <!-- MySQL驱动 -->
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.47</version>
    </dependency>
    <!--
            mapper-spring-boot-starter链接Spring Boot和MyBatis,构建基于Spring Boot的MyBatis应用程序
                1. 自动检测现有的DataSource
                2. 将创建并注册SqlSessionFactory的实例,该实例使用SqlSessionFactoryBean将该DataSource作为输入进行传递
                3. 将创建并注册从SqlSessionFactory中获取的SqlSessionTemplate的实例。
                4. 自动扫描mappers,将它们链接到SqlSessionTemplate并将其注册到Spring上下文,以便将它们注入到bean中。
                5. 使用了该Starter之后,只需要定义一个DataSource即可(配置文件可配置),
                    它会自动创建使用该DataSource的SqlSessionFactoryBean以及SqlSessionTemplate。
                    会自动扫描你的Mappers,连接到SqlSessionTemplate,并注册到Spring上下文中。
        -->
    <dependency>
        <groupId>tk.mybatis</groupId>
        <artifactId>mapper-spring-boot-starter</artifactId>
        <version>2.1.4</version>
    </dependency>
    <!-- 分页插件 -->
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper-spring-boot-starter</artifactId>
        <version>1.2.10</version>
    </dependency>


    <!-- Java操作各种类型的报表 -->
    <!-- Java操作excel -->
    <dependency>
        <groupId>net.sourceforge.jexcelapi</groupId>
        <artifactId>jxl</artifactId>
        <version>2.6.12</version>
    </dependency>
    <!-- Java操控excel后缀为xls的表 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi</artifactId>
        <version>4.0.1</version>
    </dependency>
    <!-- Java操控excel后缀为xlsx的表 -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml</artifactId>
        <version>4.0.1</version>
    </dependency>
    <!--
         Java操作ooxml。
         OOXML是一种开放的文档标准,微软的Office套件,WPS的套件等生成的文件可以互相兼容。
         也使用JAVA、Go等也可以操作这些文档,生成Office文件,套用模板文件,清理修改痕迹等操作。
        -->
    <dependency>
        <groupId>org.apache.poi</groupId>
        <artifactId>poi-ooxml-schemas</artifactId>
        <version>4.0.1</version>
    </dependency>
    <!-- 用于解析CSV文件的java类库 -->
    <dependency>
        <groupId>com.opencsv</groupId>
        <artifactId>opencsv</artifactId>
        <version>4.5</version>
    </dependency>
    <!-- Java操作office套件 -->
    <!--
            该jar包使用阿里云镜像无法下载,可以直接从github下载然后install到Maven本地仓库中
             1. https://github.com/freemansoft/jacob-project/releases
             2. mvn install:install-file -DgroupId=com.jacob -DartifactId=jacob -Dversion=1.20 -Dpackaging=jar -Dfile=jacob.jar
        -->
    <dependency>
        <groupId>com.jacob</groupId>
        <artifactId>jacob</artifactId>
        <version>1.20</version>
    </dependency>

    <!-- 报表生成 -->
    <!-- 开源报表生成工具 -->
    <dependency>
        <groupId>net.sf.jasperreports</groupId>
        <artifactId>jasperreports</artifactId>
        <version>6.5.0</version>
        <!--排除itext,jar读取-->
        <exclusions>
            <!--
                    JasperReports报表生成工具对Itext进行了封装,简化了pdf输出的过程。
                    有可能导入依赖报错提示 com.lowagie:itext失败
                    我们只需要排除对com.lowagie:itext:jar的读取即可
                -->
            <exclusion>
                <groupId>com.lowagie</groupId>
                <artifactId>itext</artifactId>
            </exclusion>
            <!-- 排除olap4j依赖 -->
            <exclusion>
                <groupId>org.olap4j</groupId>
                <artifactId>olap4j</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!-- OLAP4J一个类似于JDBC驱动,能够用于访问任何OLAP服务器的Java公共类包。 -->
    <dependency>
        <groupId>org.olap4j</groupId>
        <artifactId>olap4j</artifactId>
        <version>1.2.0</version>
    </dependency>
    <!-- 可以将XML、Html文件转化为PDF文件 -->
    <dependency>
        <groupId>com.lowagie</groupId>
        <artifactId>itext</artifactId>
        <version>2.1.7</version>
    </dependency>
    <!-- 图表绘制类库 -->
    <dependency>
        <groupId>org.jfree</groupId>
        <artifactId>jfreechart</artifactId>
        <version>1.5.0</version>
    </dependency>


    <!-- 其他包 -->
    <!-- Lombok简化实体类开发 -->
    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
    </dependency>
    <!-- 常用工具类包 -->
    <dependency>
        <groupId>org.apache.commons</groupId>
        <artifactId>commons-lang3</artifactId>
    </dependency>
</dependencies>