Duvida basica

11 respostas
M

ola pessoal, estou tentando acessar um arquivo .txt via java web start, para edita-lo …
mas quando executo, da o seguinte erro :

Exception in thread AWT-EventQueue-0 java.security.AccessControlException: access denied (java.io.FilePermission arquivo.txt 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.RandomAccessFile.(Unknown Source)

at _escreverAA.(_escreverAA.java:12)

at Acesso$1.actionPerformed(Acesso.java:23)

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.Window.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)

segue meu codigo (quando executo pelo eclipse funciona, qunado crio o .jar e clico 2 vezes, tambem, so nao funciona na web … ) :

import java.io.*;
import javax.swing.JOptionPane;

public class _navegarAA {

private static RandomAccessFile arquivo;

public _navegarAA() {

try {

arquivo = new RandomAccessFile(new File(arquivo.txt), rw);

JOptionPane.showMessageDialog(null, acho arquivo, “”, JOptionPane.ERROR_MESSAGE);

} catch (FileNotFoundException e) {

JOptionPane.showMessageDialog(null, e.getMessage(), erro 1 nao acho, JOptionPane.ERROR_MESSAGE);

}
try {

arquivo.seek(0);

arquivo.seek(12);

JOptionPane.showMessageDialog(null, leo arquivo, “”, JOptionPane.ERROR_MESSAGE);

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.getMessage(), erro 2 nao leo, JOptionPane.ERROR_MESSAGE);

}
try {

arquivo.seek(12);

arquivo.writeChar(X);

arquivo.seek(12);

JOptionPane.showMessageDialog(null, navego arquivo, “”, JOptionPane.ERROR_MESSAGE);

} catch (IOException e) {

JOptionPane.showMessageDialog(null, e.getMessage(), erro 2 nao navego, JOptionPane.ERROR_MESSAGE);

}

}

}

11 Respostas

T

Não conheço direito Java Web Start, mas acho que você tem de assinar o código também, como se faz com uma applet.

M

por acaso assinar uma applet eh a mesma coisa que assinar um .jar …

pois meu arquivo .jar esta assinado …

T

http://java.sun.com/j2se/1.5.0/docs/guide/javaws/developersguide/syntax.html#security

Ele diz que se você não alterar um elemento em seu arquivo JNLP, mesmo assinando o arquivo você não poderá gravar ou ler de arquivos.

fabim

Por default, applets nao tem autorização pra fazer NADA na maquina cliente…

Quando assinar o jar nao resolve, vc terá que explicitar o que o seu applet tem permissao pra fazer atravez do arquivo java.policy…

da uma googlada por “Java Applet acess denied” que tu vai axar muita coisa sobre isso

M

entao minha assinatura esta errada …

ai vai meu jnlp …

<?xml version="1.0" encoding="utf-8"?> 

<jnlp 
	spec="1.0+" 
	codebase="http://www.informatica.com.br" href="teste.jnlp"> 

		<information> 
			<title>teste</title> 
			<vendor>teste</vendor> 
			<homepage href="http://www.informatica.com.br/index.html"/>

			<description>teste</description> 
			<description kind="short">teste</description> 
			<icon href="images/logo.jpg"/> 
			<offline-allowed/> 
		</information> 

		<resources> 
			<j2se version="1.6+" href="http://java.sun.com/products/autodl/j2se"/> 

			<jar href="teste1.jar" main="true"/> 
			<property name="myProperty" value="propriedade"/> 

		</resources> 

		<application-desc main-class="Acesso"/> 
   		</application-desc>

		<security>
			<all-permissions/>
		</security>
</jnlp>

so tenho um .jar nessa minha aplicacao, com o codigo acima …

M

assinei meu arquivo jar por aqui :


http://www.lcmi.ufsc.br/jacoweb/restrito/documentos/assinatura/index.htm

fiz exatamente como consta …

meu arquivo javaws.policy esta assim :

/* AUTOMATICALLY GENERATED ON Mon Jun 25 10:51:05 GMT-03:00 2007*/
/* DO NOT EDIT */

keystore "file:/c:/valida/valida", "jks";

grant codeBase "file:${jnlpx.home}/javaws.jar" {
  permission java.security.AllPermission;
};

grant signedBy "key",  codeBase "http://www.informatica.com.br/*" {
  permission java.security.AllPermission;
  permission java.io.FilePermission "<<ALL FILES>>", "read, write, execute, delete";
};

grant codeBase "file:/C:/jmweb/*" {
  permission java.security.AllPermission;
  permission java.io.FilePermission "<<ALL FILES>>", "read, write, execute, delete";
};

e o java.policy esta assim :

/* AUTOMATICALLY GENERATED ON Mon Jun 25 10:58:08 GMT-03:00 2007*/
/* DO NOT EDIT */

keystore "file:/c:/valida/valida", "jks";

grant codeBase "file:/C:/jdk1.6.0_01/jre/lib/ext/*" {
  permission java.security.AllPermission;
};

grant codeBase "file:/C:/WINDOWS/Sun/Java/lib/ext/*" {
  permission java.security.AllPermission;
};

grant {
  permission java.lang.RuntimePermission "stopThread";
  permission java.net.SocketPermission "localhost:1024-", "listen";
  permission java.util.PropertyPermission "java.version", "read";
  permission java.util.PropertyPermission "java.vendor", "read";
  permission java.util.PropertyPermission "java.vendor.url", "read";
  permission java.util.PropertyPermission "java.class.version", "read";
  permission java.util.PropertyPermission "os.name", "read";
  permission java.util.PropertyPermission "os.version", "read";
  permission java.util.PropertyPermission "os.arch", "read";
  permission java.util.PropertyPermission "file.separator", "read";
  permission java.util.PropertyPermission "path.separator", "read";
  permission java.util.PropertyPermission "line.separator", "read";
  permission java.util.PropertyPermission "java.specification.version", "read";
  permission java.util.PropertyPermission "java.specification.vendor", "read";
  permission java.util.PropertyPermission "java.specification.name", "read";
  permission java.util.PropertyPermission "java.vm.specification.version", "read";
  permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
  permission java.util.PropertyPermission "java.vm.specification.name", "read";
  permission java.util.PropertyPermission "java.vm.version", "read";
  permission java.util.PropertyPermission "java.vm.vendor", "read";
  permission java.util.PropertyPermission "java.vm.name", "read";
};

grant signedBy "key",  codeBase "http://www.informatica.com.br/*" {
  permission java.security.AllPermission;
  permission java.io.FilePermission "<<ALL FILES>>", "read, write, execute, delete";
};

grant codeBase "file:/C:/jmweb/*" {
  permission java.security.AllPermission;
  permission java.io.FilePermission "<<ALL FILES>>", "read, write, execute, delete";
};

ambos salvos em C:\jdk1.6.0_01\jre\lib\security , conforme o manual …

M

uma pergunta sobre a assinatura de um .jar …

primeiro eu crio o jar
segundo eu crio o par de chaves
terceiro eu assino o jar
quarto eu exporto o certificado

correto ??

ai quando executo o java web start ele tem que pedir pro usuario se ele aceita ou nao esse certificado (o site do banco do brasil tem algo parecido) - correto ???

no meu caso nao pede essa aceitacao do certificado, o que tenho que fazer entao depois de exportar o certificado ??

Link_pg

olá!

eu tava com um problema parecido… não conseguia mandar emails através de um applet, dava acesso negado
daí eu fiz esse esquema ai que voce falou e deu certinho…

:arrow:sobre o keytool aqui
:arrow:sobre o jarsigner aqui

daí quando eu rodo a página ele pergunta se você deseja confiar no certificado :wink:

abraços

M

quando eu executo nao pergunta se desejo confiar no certificado, o que pode ser entao ??

pois assinei o arquivo conforme o manual, da mesma maneira …

o que posso fazer ?

Link_pg

se você ativou na primeira vez a opção de sempre confiar no certificado, ele não pergunta mais…

M

ai que ta, ele nem pergunta nada …
nenhum vez perguntou

Criado 25 de junho de 2007
Ultima resposta 26 de jun. de 2007
Respostas 11
Participantes 4