Erro Applet

18 respostas
E

e ai pessoal…

tenho uma aplicação desktop que necessitei passá-la para Applet. Rodou direitinho, exceto quando chego na part5e de gerar relatórios. Quando clico no botão que me gera o relatório dá o seuinte erro:

java.security.AccessControlException: access denied (java.io.FilePermission .\Relatorios\Protocolo2.jasper read)
	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.checkRead(Unknown Source)
	at java.io.File.exists(Unknown Source)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:73)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:515)
	at Imprime.actionPerformed(Imprime.java:69)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

tentei editar o arquivo .policy dessa forma:

/* AUTOMATICALLY GENERATED ON Tue Apr 16 17:20:59 EDT 2002*/
/* DO NOT EDIT */

grant {
  permission java.security.AllPermission;
  permission java.io.FilePermission.AllPermission;
};

mas não deu certo…tb tentei assinar a applet…não deu certo

alguém poderia me ajudar a solucionar isso? qualquer idéia é bem-vinda!!!

desde já agradeço a todos.

flws

18 Respostas

O

Onde fica o arquivo .\Relatorios\Protocolo2.jasper? Tá no jar? Tá no site? Tá instalado na máquina do cliente? No seu código está acessando o arquivo assim mesmo (.\Relatorios\Protocolo2.jasper)?

E

ele fica na pasta Relatórios…eu coloquei dentro e fora do jar…ele está na minha máquina…é dela que estou tentando rodar a applet.

quando eu rodo pelo Eclipse funciona normalmente, mas se eu executo pelo browser dá esse erro ai.

alguma sugestão?

O

Afinal, está no jar ou não está?

Para testar um applet (e para a gente entender melhor por que não funciona), não use o termo “minha máquina”, pois não sei se você está falando do servidor ou do cliente. O ideal é sempre enviar os .jasper dentro do próprio .jar.

Faça o seguinte:
:arrow: Coloque os .jasper no jar (crie a pasta Relatorios na raiz do jar e coloque os .jasper nele).
:arrow: Para acessar os .jasper use o caminho /Relatorios/blabla.jasper. Lembre-se que é case sensitive e é para usar a “/” e não a “” e não precisa do ". " no inicio.
:arrow: Se você está gerando o .jar pelo Eclipse, certifique-se se foi tudo gerado corretamente (abra o jar e veja se os .jasper estão lá).
:arrow: Assine este .jar e todos os outros que voê usa com este applet.

E

cara…fiz o que vc disse e msm assim continuar a dar esse maldito erro…

ainda não sei o que pode estar havendo

mto obrigado pela sua ajuda

t+

O

Tinha um post aqui no GUJ falando sobre um bug de assinar jars se eles já tinham sido assinados anteriormente. Falava para retirar os arquivos de assinatura do arquivo e assinar de novo. Apagar o jar, gerar de novo e assinar também deve funcionar.

E

amigo,

tentei fazer o que vc me disse mas mesmo assim dá a mesma coisa…

não sei mais o que fazer.

se alguém tiver alguma idéria será muito bem-vinda.

obrigado.

javaAurelio

Acho que um applet nao pode acessar arquivos no cliente. Por Seguranca do Java.

java.security.AccessControlException: access denied (java.io.FilePermission .\Relatorios\Protocolo2.jasper read)

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.checkRead(Unknown Source)

at java.io.File.exists(Unknown Source)


Cara eu acho que nao pode,
mas deve ter uma forma bem Complexa para fazer isso.

[size=18][u][b]    JAVA NAO TEM LIMITE[/b][/u][/size]
E

nossa, que m&$%@…

agora ferrou de vez então…

bom, se alguém souber dessa “forma complexa” de se fazer…

vlws

O

A tal “forma complexa” é assinando o código.
Mas você não colocou os seus .jasper no seu jar? Se colocou, você não está mais acessando o file system da máquina cliente. Poste o stacktrace do erro quando voce envia o seu .jasper dentro do jar. E se possivel poste o seu .jar e a sua pagina html/jsp que chama o codigo.

E

amigo, o erro eh esse:

java.security.AccessControlException: access denied (java.io.FilePermission Relatorios\Protocolo2.jasper read)
	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.checkRead(Unknown Source)
	at java.io.File.exists(Unknown Source)
	at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:73)
	at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:515)
	at Imprime.actionPerformed(Imprime.java:69)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
	at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
	at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
	at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
	at java.awt.Component.processMouseEvent(Unknown Source)
	at javax.swing.JComponent.processMouseEvent(Unknown Source)
	at java.awt.Component.processEvent(Unknown Source)
	at java.awt.Container.processEvent(Unknown Source)
	at java.awt.Component.dispatchEventImpl(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
	at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
	at java.awt.Container.dispatchEventImpl(Unknown Source)
	at java.awt.Component.dispatchEvent(Unknown Source)
	at java.awt.EventQueue.dispatchEvent(Unknown Source)
	at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
	at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
	at java.awt.EventDispatchThread.run(Unknown Source)

eu estou tentando chamar de uma JApplet.

Obs: pelo eclipse roda td normal.

grato pela ajuda e pela atenção.

O
java.security.AccessControlException: access denied (java.io.FilePermission Relatorios\Protocolo2.jasper read)

Como você está tentando acessar este arquivo? Você continua colocando a “” ao inves da “/” (em código)? Precisa de uma “/” antes de “Relatorios”.

T

evandrosantos:
tb tentei assinar a applet…não deu certo

a) Você precisa limpar sempre as applets do cache do browser. Esse cache não é limpo só com Ctrl+F5; você precisa ir ao Painel de Controle, e escolher Java (ou Java Plug-In), e ver onde é que se limpa o cache.
b) Você tem de assinar não só a sua applet, como os JARs que sua applet usa. E se a applet já estiver assinada, você precisa “limpar a assinatura” antes, conforme foi dito antes.
c) Relatórios não são muito bons para serem criados com applets (por conta desses problemas chatos); deveriam ser criados no servidor e baixados.

E

no código eu passo “/” mas ai no stack ele inverte. Também já tentei colocar a barra antes de “relatorio” mas tb dá o mesmo erro…

E


a) Você precisa limpar sempre as applets do cache do browser. Esse cache não é limpo só com Ctrl+F5; você precisa ir ao Painel de Controle, e escolher Java (ou Java Plug-In), e ver onde é que se limpa o cache.
b) Você tem de assinar não só a sua applet, como os JARs que sua applet usa. E se a applet já estiver assinada, você precisa “limpar a assinatura” antes, conforme foi dito antes.
c) Relatórios não são muito bons para serem criados com applets (por conta desses problemas chatos); deveriam ser criados no servidor e baixados.

fiz o que vc disse…limpei o cache e tals…mas o erro persiste.
como assim vc diz que o relatórios “deveria ser baixados do servidor”? vc poderia me dar uma luz de como eu posso fazer isso? talvez seja uma solução paralela para meu problema…

obrigado

E

?

M

ola amigo, tudo bem …

voce conseguiu resolver esse problema do acesso ao relatorio .jasper …
pois estou querendo fazer a mesma coisa e até agora nao consegui, da o mesmo erro que voce falou …

obrigado

fabim

amigo, o erro persiste pq alguma classe, ou algum .JAR que vc usa junto com sua classe nao está assinado…

Assina tuas classes e teus jars que vai da certo sim…

Use a busca do guj e digite o seguinte: “Assinar applet”

a primeira ocorrência tem a resposta do que vc procura :wink:

gogus

E aí, Blz!

Cara, tu conseguiu acessar os teus arquivos .jasper que estão dentro do .jar da tua aplicação via JWS?

Estou tentando isso a um tempo e não estou conseguindo, se alguém puder ajudar!

Valeu!

Criado 8 de março de 2007
Ultima resposta 23 de nov. de 2007
Respostas 18
Participantes 7