一 问题
1. jar包过大
springboot项目,加入javacv的maven依赖后,jar包达到800M以上。
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv-platform</artifactId>
<version>${javacv-version}</version>
</dependency>
2. 启动报错
是Hibernate相关的错误
java.lang.NoClassDefFoundError: Could not initialize class org.hibernate.validator.engine......
二 解决
1. jar包过大
jar包过大的原因是,javacv 中对不同系统版本做了适配,所以有很多不需要的依赖也被下载下来了,我们可以对系统做一下区分。
本地开发可以使用本机系统对应的依赖。
服务器一般是Linux版本,打jar包的时候可以放开 linux依赖的注释。
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacv</artifactId>
<version>${javacv-version}</version>
</dependency>
<!-- javacv - Windows -->
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>javacpp</artifactId>
<version>${javacv-version}</version>
<classifier>windows-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>opencv</artifactId>
<version>${opencv-version}</version>
<classifier>windows-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>openblas</artifactId>
<version>${openblas-version}</version>
<classifier>windows-x86_64</classifier>
</dependency>
<dependency>
<groupId>org.bytedeco</groupId>
<artifactId>ffmpeg</artifactId>
<version>${ffmpeg-version}</version>
<classifier>windows-x86_64</classifier>
</dependency>
<!-- javacv - Linux -->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>javacpp</artifactId>-->
<!-- <version>${javacv-version}</version>-->
<!-- <classifier>linux-x86_64</classifier>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>opencv</artifactId>-->
<!-- <version>${opencv-version}</version>-->
<!-- <classifier>linux-x86_64</classifier>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>openblas</artifactId>-->
<!-- <version>${openblas-version}</version>-->
<!-- <classifier>linux-x86_64</classifier>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>ffmpeg</artifactId>-->
<!-- <version>${ffmpeg-version}</version>-->
<!-- <classifier>linux-x86_64</classifier>-->
<!-- </dependency>-->
<!-- javacv - MacOS -->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>javacpp</artifactId>-->
<!-- <version>${javacv-version}</version>-->
<!-- <classifier>macosx-x86_64</classifier>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>opencv</artifactId>-->
<!-- <version>${opencv-version}</version>-->
<!-- <classifier>macosx-x86_64</classifier>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>openblas</artifactId>-->
<!-- <version>${openblas-version}</version>-->
<!-- <classifier>macosx-x86_64</classifier>-->
<!-- </dependency>-->
<!-- <dependency>-->
<!-- <groupId>org.bytedeco</groupId>-->
<!-- <artifactId>ffmpeg</artifactId>-->
<!-- <version>${ffmpeg-version}</version>-->
<!-- <classifier>macosx-x86_64</classifier>-->
<!-- </dependency>-->
2. Hibernate相关报错
应该是依赖冲突
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
</exclusion>
</exclusions>
</dependency>
三 参考
- JavaCV依赖精简
- 日常错误 Could not initialize class org.hibernate.validator.internal.engine.ConfigurationImpl
|