Java 从Applet打印JasperReport

Java 从Applet打印JasperReport,java,applet,jasper-reports,Java,Applet,Jasper Reports,我开发了一个web应用程序,它使用JasperReports进行报告。 因为我必须使用Applet在客户端查看报告。我通常可以在applet中看到报告,但在打印时(当我单击查看器中的“打印”按钮时),它会抛出一个异常,我可以在Java控制台中看到这个异常。我在网上浏览了很多关于这个问题的信息,并根据专家的建议做了任何事情。我在catalina.policy文件中添加了授予权限,因为我使用Tomcat作为我的web服务器。另外,在java.policy文件中将grant权限作为代码库添加到我的小程

我开发了一个web应用程序,它使用
JasperReports
进行报告。 因为我必须使用Applet在客户端查看报告。我通常可以在applet中看到报告,但在打印时(当我单击查看器中的“打印”按钮时),它会抛出一个异常,我可以在Java控制台中看到这个异常。我在网上浏览了很多关于这个问题的信息,并根据专家的建议做了任何事情。我在
catalina.policy
文件中添加了授予权限,因为我使用
Tomcat
作为我的web服务器。另外,在
java.policy
文件中将grant权限作为代码库添加到我的小程序中。我签署了jar文件,该文件包含小程序的类文件。但我还是犯了同样的错误

下面是来自Java控制台的堆栈跟踪

Java Plug-in 1.6.0_24
Using JRE version 1.6.0_24-b07 Java HotSpot(TM) Client VM
User home directory = C:\Documents and Settings\Administrator


Exception in thread "Thread-13" java.lang.ExceptionInInitializerError
    at net.sf.jasperreports.view.JRViewer$21.run(JRViewer.java:1211)
    at java.lang.Thread.run(Unknown Source)
Caused by: java.security.AccessControlException: access denied (java.lang.RuntimePermission accessClassInPackage.sun.print)
    at java.security.AccessControlContext.checkPermission(Unknown Source)
    at java.security.AccessController.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPermission(Unknown Source)
    at java.lang.SecurityManager.checkPackageAccess(Unknown Source)
    at sun.plugin2.applet.Applet2SecurityManager.checkPackageAccess(Unknown Source)
    at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass0(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at sun.plugin2.applet.Plugin2ClassLoader.loadClass(Unknown Source)
    at java.lang.ClassLoader.loadClass(Unknown Source)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Unknown Source)
    at net.sf.jasperreports.engine.JasperPrintManager.<clinit>(JasperPrintManager.java:419)
    ... 2 more
Java插件1.6.0\u 24
使用JRE版本1.6.0_24-b07 Java HotSpot(TM)客户端虚拟机
用户主目录=C:\Documents and Settings\Administrator
线程“thread-13”java.lang.ExceptionInInitializeError中出现异常
net.sf.jasperreports.view.JRViewer$21.run(JRViewer.java:1211)
位于java.lang.Thread.run(未知源)
原因:java.security.AccessControlException:拒绝访问(java.lang.RuntimePermission accessClassInPackage.sun.print)
位于java.security.AccessControlContext.checkPermission(未知源)
位于java.security.AccessController.checkPermission(未知源)
位于java.lang.SecurityManager.checkPermission(未知源)
位于java.lang.SecurityManager.checkPackageAccess(未知源)
位于sun.plugin2.applet.Applet2SecurityManager.checkPackageAccess(未知源)
位于sun.misc.Launcher$AppClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于sun.plugin2.applet.Plugin2ClassLoader.loadClass0(未知源)
位于sun.plugin2.applet.Plugin2ClassLoader.loadClass(未知源)
位于sun.plugin2.applet.Plugin2ClassLoader.loadClass0(未知源)
位于sun.plugin2.applet.Plugin2ClassLoader.loadClass(未知源)
位于sun.plugin2.applet.Plugin2ClassLoader.loadClass(未知源)
位于java.lang.ClassLoader.loadClass(未知源)
位于java.lang.Class.forName0(本机方法)
位于java.lang.Class.forName(未知源)
位于net.sf.jasperreports.engine.JasperPrintManager.(JasperPrintManager.java:419)
... 还有两个

为了允许小程序打印,您需要对小程序进行签名:


谢谢您的快速回复。我已经做了。还可以设置策略文件、catalina和java。但我还是得到了例外。另一个问题是,如果我们对小程序和Jar文件进行签名,那么是否有必要更改策略文件?为了获得运行小程序的权限,我会获得附加对话框,其中包含我附加在此处的屏幕截图。我无法将Jar文件附加在此处,因此我正在编写该对话框的结果:“小程序包含已签名和未签名的代码,这可能对您的计算机有害”。我找到了解决方案。我使用了5个jar文件,并对包含我的小程序类的文件进行了签名,这就是我出错的原因。因此,我对所有jar进行了签名,现在我可以从小程序打印。非常感谢stacker。