Ajuda java.security.AccessControlException: access denied com JasperReport

4 respostas
C

Olá,
gostaria de saber se alguem sabe que erro é este, estou usando o jasperreports-0.6.7, itext-1.02b e iReport 0.5.0.

javax.servlet.ServletException: Error loading object from file : /reports/Teste.jasper  Causa ->java.io.InvalidClassException: net.sf.jasperreports.engine.base.JRBaseReport; local class incompatible: stream classdesc serialVersionUID = 607, local class serialVersionUID = 601

br.com.Relatorio.service(Relatorio.java:115)

javax.servlet.http.HttpServlet.service(HttpServlet.java:802)

sun.reflect.GeneratedMethodAccessor336.invoke(Unknown Source)

sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)

java.lang.reflect.Method.invoke(Method.java:324)

org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239)

java.security.AccessController.doPrivileged(Native Method)

javax.security.auth.Subject.doAsPrivileged(Subject.java:500)

org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268)

org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157)

4 Respostas

T
net.sf.jasperreports.engine.base.JRBaseReport; local class incompatible: stream classdesc serialVersionUID = 607, local class serialVersionUID = 601

No seu ambiente há um jar com a versão 0.6.1. Procure e substitua-o pela versão 0.6.7

jasperreports-0.6.1.jar

C

thingol valeu pela ajuda, agora estou tendo o seguinte erro:

javax.servlet.ServletException: Error loading expression class : Teste Causa ->java.security.AccessControlException: access denied (java.lang.RuntimePermission createClassLoader) br.com.conpartnet.controller.Relatorio.service(Relatorio.java:115) javax.servlet.http.HttpServlet.service(HttpServlet.java:802) sun.reflect.GeneratedMethodAccessor336.invoke(Unknown Source) sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) java.lang.reflect.Method.invoke(Method.java:324) org.apache.catalina.security.SecurityUtil$1.run(SecurityUtil.java:239) java.security.AccessController.doPrivileged(Native Method) javax.security.auth.Subject.doAsPrivileged(Subject.java:500) org.apache.catalina.security.SecurityUtil.execute(SecurityUtil.java:268) org.apache.catalina.security.SecurityUtil.doAsPrivilege(SecurityUtil.java:157)

Eu não posso dar este tipo de permissão e gostaria de saber se ha alguma forma de mudar isto. Meu codigo para gerar o relatorio:

context = this.getServletConfig().getServletContext();

// Pega o nome do relatorio a ser gerado
String nmRelat  = request.getParameter("relatorio");
	    	
// Pega o xml e que vai virar relatorio
reportFile = new File(context.getRealPath("/reports/"+ nmRelat));

// Verifica se o arquivo existe
if (reportFile.exists()) 
{
	// Transforma em PDF
	byte[] bytes = JasperRunManager.runReportToPdf(reportFile.getPath(), 
	           									   new HashMap(), 
	           									   DoConexao.getConexao());
	// Seta o Content Type
	response.setContentType("application/pdf");
	ServletOutputStream out = response.getOutputStream(); 
	out.write(bytes, 0, bytes.length);
	out.flush(); 
	out.close();
}
C

Alguem poderia me dar uma ajuda aqui… estou ficando maluco com isso !!! não posso atribuir este tipo de permissão e gostaria de saber se possui outra forma de fazer isto !!!

T

Infelizmente, pelo que imagino, você vai ter de procurar o responsável pelo seu servidor de aplicações para poder dar esse tipo de permissão (criação de classloaders). Não sei exatamente como é que se faz isso, deve haver algum lugar no Tomcat em que faz isso.

http://tomcat.apache.org/tomcat-5.0-doc/security-manager-howto.html

Criado 26 de abril de 2006
Ultima resposta 28 de abr. de 2006
Respostas 4
Participantes 2