Java Maven Jasperreport从Eclipse运行Ok,从带有Java-jar JRRuntimeException:图表主题的;“眼睛.糖果.六十年代”;找不到
我创建了一个Java程序,它使用JasperReports创建一个报告。 在我的一篇JasperReports中,我使用了主题=“eye.candy.sixties” 当我在gui中从Eclipse运行项目时,一切正常,请参阅 但是,当我使用Maven构建同一个项目并从命令行运行它时,我得到了一个错误:Java Maven Jasperreport从Eclipse运行Ok,从带有Java-jar JRRuntimeException:图表主题的;“眼睛.糖果.六十年代”;找不到,java,maven,jasper-reports,Java,Maven,Jasper Reports,我创建了一个Java程序,它使用JasperReports创建一个报告。 在我的一篇JasperReports中,我使用了主题=“eye.candy.sixties” 当我在gui中从Eclipse运行项目时,一切正常,请参阅 但是,当我使用Maven构建同一个项目并从命令行运行它时,我得到了一个错误: Maven: clean compile assembly:single Command line: java -jar chartTheme-0.0.1-SNAPSHOT-jar-with-
Maven: clean compile assembly:single
Command line: java -jar chartTheme-0.0.1-SNAPSHOT-jar-with-dependencies.jar
线程“main”net.sf.jasperreports.engine.JRRuntimeException中的异常:未找到图表主题“eye.candy.sixties”
我错过了什么,我应该改变什么?欢迎任何帮助强>
可以在Github上找到源代码:
我确实在Maven中包含了图表主题依赖项,请参见“Eclipse中的Maven依赖项列表:
在下面的代码中(pom.xml)
4.0.0
com.lightroomstatistics.samples
图表主题
0.0.1-快照
图表主题
图表主题
www.lightroomstatistics.com
光室统计
www.lightroomstatistics.com
com.lightroomstatistics.maven
lightroomstatistics父pom
1.0.0
1.8
6.4.0
4.0.0
1.8
1.8
jr ce发布
JasperReports CE发布
http://jaspersoft.jfrog.io/jaspersoft/jr-ce-releases
net.sf.jasperreports
jasperreports
${jasperreports.version}
net.sf.jasperreports
jasperreports字体
${jasperreportsfonts.version}
net.sf.jasperreports
jasperreports图表主题
${jasperreports.version}
报告
**/*.*
数据
**/*.*
maven资源插件
3.0.2
复制报告资源
验证
复制资源
${basedir}/target/reports
报告
真的
复制数据资源
验证
复制资源
${basedir}/target/data
数据
真的
maven汇编插件
chartTheme.ChartThemesApp
带有依赖项的jar
组装
包裹
单一的
如果打开构建的联合库chartTheme-0.0.1-SNAPSHOT-jar-with-dependencies.jar
,您会发现文件jasperreports-char-themes-6.4.0.jar/jasperreports\u扩展名的内容有误,因为它们被其他一些jasperreports>的内容覆盖_extension.properties
文件也存在于依赖项中
事实上,如果在运行mvn assembly
后在输出控制台中搜索,您将发现以下跟踪:
[INFO]jasperreports\u extension.properties已添加,正在跳过
…顺便说一句,这不是程序集上跳过的唯一一个文件
因此,由于重叠,将所有这些依赖项组装在一起肯定不是一个好主意。至少,不是以这种方式
我认为您应该尝试的第一件事是将参数化,以排除不需要的文件,然后优先选择所需的文件,我认为这些文件将是jasperreports chart themes.jar中的文件(根据您发布的日志中的跟踪)。感谢您研究此问题。小桑蒂向我解释了问题所在。
我也不喜欢有一个大JAR,我决定把所有依赖JAR放在一个单独的lib目录/文件夹中
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>chartTheme.ChartThemesApp</mainClass>
</manifest>
</archive>
<finalName>${project.name}</finalName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
org.apache.maven.plugins
maven jar插件
真的
解放党/
chartTheme.ChartThemesApp
${project.name}
org.apache.maven.plugins
maven依赖插件
2.5.1
复制依赖项
包裹
复制依赖项
${project.build.directory}/lib/
我认为这比拥有一个大罐子要好得多。祝贺你!
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<configuration>
<archive>
<manifest>
<addClasspath>true</addClasspath>
<classpathPrefix>lib/</classpathPrefix>
<mainClass>chartTheme.ChartThemesApp</mainClass>
</manifest>
</archive>
<finalName>${project.name}</finalName>
</configuration>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-dependency-plugin</artifactId>
<version>2.5.1</version>
<executions>
<execution>
<id>copy-dependencies</id>
<phase>package</phase>
<goals>
<goal>copy-dependencies</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}/lib/</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>