问题描述
我有打包到jar中的spring boot项目。 我将外部jar(Jasper)添加到pom中,如下所示:
<dependency>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>${jasperreports.version}</version>
<scope>system</scope>
<systemPath>${project.basedir}/lib/jasperreports-6.13.0.jar</systemPath>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<id>install-jasperreports613</id>
<phase>clean</phase>
<configuration>
<file>${project.basedir}/lib/jasperreports-6.13.0.jar</file>
<repositoryLayout>default</repositoryLayout>
<groupId>net.sf.jasperreports</groupId>
<artifactId>jasperreports</artifactId>
<version>6.13.0</version>
<packaging>jar</packaging>
<generatePom>true</generatePom>
</configuration>
<goals>
<goal>install-file</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
运行jar(java -jar myapp.jar)时,我是jasper的gettig classdefNotfound。
Caused by: java.lang.NoClassDefFoundError: net/sf/jasperreports/engine/JRDataSource
at java.lang.class.getDeclaredMethods0(Native Method) ~[na:1.8.0_202]
at java.lang.class.privateGetDeclaredMethods(UnkNown Source) ~[na:1.8.0_202]
at java.lang.class.getDeclaredMethods(UnkNown Source) ~[na:1.8.0_202]
at org.springframework.util.ReflectionUtils.getDeclaredMethods(ReflectionUtils.java:463) ~[spring-core-5.2.9.RELEASE.jar!/:5.2.9.RELEASE]
... 29 common frames omitted
Caused by: java.lang.classNotFoundException: net.sf.jasperreports.engine.JRDataSource
at java.net.urlclassloader.findClass(UnkNown Source) ~[na:1.8.0_202]
at java.lang.classLoader.loadClass(UnkNown Source) ~[na:1.8.0_202]
at org.springframework.boot.loader.Launchedurlclassloader.loadClass(Launchedurlclassloader.java:151) ~[e-statement-core-0.0.1-SNAPSHOT.jar:0.0.1-SNAPSHOT]
at java.lang.classLoader.loadClass(UnkNown Source) ~[na:1.8.0_202]
... 33 common frames omitted
当我提取软件包时,软件包中没有jasper lib。 如何将外部库包含到程序包中。
解决方法
jar jasperreports
位于MavenCentral上。因此,如果您可以访问互联网,则无需手动进行处理。