Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将JasperReports字体文件动态注入webapp_Java_Fonts_Jasper Reports - Fatal编程技术网

Java 将JasperReports字体文件动态注入webapp

Java 将JasperReports字体文件动态注入webapp,java,fonts,jasper-reports,Java,Fonts,Jasper Reports,我们有一个Web服务,它接收报告的名称及其参数,并调用JRPdfExporter 由于用户可以在运行时添加报告,因此我们需要一种方法将Jasper jar字体文件动态添加到类路径中,以便用户添加的任何新字体都可以添加到Jasper类路径中 我们正在使用这段代码尝试将新jar注入类路径,但没有成功 URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader(); Class sysclass = URLC

我们有一个Web服务,它接收报告的名称及其参数,并调用JRPdfExporter

由于用户可以在运行时添加报告,因此我们需要一种方法将Jasper jar字体文件动态添加到类路径中,以便用户添加的任何新字体都可以添加到Jasper类路径中

我们正在使用这段代码尝试将新jar注入类路径,但没有成功

URLClassLoader sysloader = (URLClassLoader) ClassLoader.getSystemClassLoader();
Class sysclass = URLClassLoader.class;

try {
    Method method = sysclass.getDeclaredMethod("addURL", new Class[]{URL.class});
    method.setAccessible(true);
    method.invoke(sysloader, new Object[] {u});
} catch (Throwable t) {
    t.printStackTrace();
    throw new IOException("Error, could not add URL to system classloader");
}
我得到的错误是

net.sf.jasperreports.engine.JRRuntimeException: net.sf.jasperreports.engine.JRException: Input stream not found at : fonts/fontsfamily1415192514231.xml
有什么办法可以做到这一点吗

还是有更好的选择?

我通过“简化”搜索特定文件夹中的JAR字体文件,打开它们并解压缩所有必要的文件/文件夹来解决这个问题