Após gerar .jar não encontra mais as imagens e nem os .html que estão dentro da aplicação empacotada…
vc pretende importar o projeto? ou é 1 jar executável?
att,
Olá pedruhenrik, em 1° lugar obrigado pela ajuda,
o projeto será executado via prompt de comando…
opa,
então andredecotia, faz pouco tempo eu tive 1 problema parecido,
acho q solução envolve algo do tipo:
getResource("/arquivo");
getResourceAsStream("/arquivo");
eu usei como base esses links:
http://www.guj.com.br/java/38033-acessar-arquivos-txt-dentro-de-um-jar
http://www.guj.com.br/java/30001-acessar-arquivo-de-dentro-de-um-jar
http://www.guj.com.br/java/32880-arquivo-texto-dentro-do-jar
http://www.guj.com.br/java/225019-acessar-arquivo-jpeg-pelo-jar
http://www.guj.com.br/java/184441-tutorial–como-acessar-arquivos-do-seu-jar
http://www.guj.com.br/java/83268-arquivo-dentro-de-jar
http://www.guj.com.br/java/145541-leitura-e-execucao-de-arquivo-dentro-do-jar
o caso q eu tive foi esse:
mas infelizmente tive q deixar os arquivos necessários fora do jar.
boa sorte!
att,
Já estou lendo todos os posts recomendados… Espero que eu não tenho de deixar os arquivos fora da app igual a você…
Até logo…
AS
o meu app utilizava certificado digital e de “dentro” do jar eu não consegui estabelecer a conexão ssl…infelizmente né! heheh
boa sorte ai!
se der dps posta o resultado.
att,
Para ler arquivos dentro do .jar você pode usar uma InputStream:
InputStream IMAGEM_INICIO = getClass().getResourceAsStream("/br/com/sistema/imagens/inicio.png");
ou
Image imagem = Toolkit.getDefaultToolkit().getImage(getClass().getResource("/br/com/sistema/imagens/inicio.png"));
Gente, estou tentando ainda, mas fala que a imagem não pode ser encontrada, dei um print da tela, por favor veja o anexo…
A forma que está sendo usada é:
/**
* Método que processa e devolve o caminho para acessar o arquivo Saraiva.gif
* @return String o caminho para Saraiva.gif
* */
private String caminhoDoArquivoSaraivaGif(){
return Class.class.getResource("/br/com/editorasaraiva/geracaoepubdemo/model/Saraiva.gif").getPath();
}
De fato este é que deveria ser o caminho para acessar os arquivos?
C:\GeracaoEpubDemoV1-01.jar\br\com\editorasaraiva\geracaoepubdemo\model
[b]c:[/b] Porque é onde o .jar se encontra
GeracaoEpubDemoV1-01.jar Porque é o nome do projeto
\br\com\editorasaraiva\geracaoepubdemo Porque é pacote onde os arquivos se encontram
aqui nois usamos getRource…
Pois é, mas não está funcionando ainda… :shock:
\br\com\editorasaraiva\geracaoepubdemo\model\Saraiva.gif Testei assim e também não funfou…
[quote=andredecotia]Gente, estou tentando ainda, mas fala que a imagem não pode ser encontrada, dei um print da tela, por favor veja o anexo…
A forma que está sendo usada é:
/**
* Método que processa e devolve o caminho para acessar o arquivo Saraiva.gif
* @return String o caminho para Saraiva.gif
* */
private String caminhoDoArquivoSaraivaGif(){
return Class.class.getResource("/br/com/editorasaraiva/geracaoepubdemo/model/Saraiva.gif").getPath();
}
[/quote]
Porque não declara a String com o caminho do pacote logo ao invés de obter uma resource pra depois retornar o mesmo caminho?
Não ví nenhuma InputStream, já tentou utilizá-la como postei acima?
Alguém já usou solução com BufferedInputStream
?
Estou fazendo uns testes, a aplicação abaixo funciona perfeitamente, porém após empacotar, gerar o .jar, ela não consegue mais localizar o arquivo, a foto…
i[code]mport java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;
public class Principal {
public static void main(String[] args) {
substituiArquivo();
}
public static void substituiArquivo() {
FileChannel sourceChannel = null;
FileChannel destinationChannel = null;
try {
sourceChannel = new FileInputStream("Foto1.jpg").getChannel();
destinationChannel = new FileOutputStream("c:\Foto1_copiado.jpg").getChannel();
sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);
} catch (FileNotFoundException f) {
System.err.println("O arquivo não foi encontrado! Erro: " + f.getMessage());
} catch (Exception e) {
} finally {
if (sourceChannel != null)
try {
sourceChannel.close();
} catch (IOException e) {
e.printStackTrace();
}
if (destinationChannel != null)
try {
destinationChannel.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}[/code]
Bom dia,
fiz novas modificações e continua não funcionando:
[code]package principal;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.channels.FileChannel;
import javax.swing.ImageIcon;
public class Principal {
public static void main(String[] args) {
new Principal().substituiArquivo();
}
public void substituiArquivo() {
FileChannel sourceChannel = null;
FileChannel destinationChannel = null;
try {
//new ImageIcon(getClass().getResource("/imagem/Foto1.jpg");
//String path = getClass().getResource("Foto1.jpg").getFile();
//URL url = getClass().getResource("/imagem/Foto1.jpg");
sourceChannel = new FileInputStream("/imagem/Foto1.jpg").getChannel();
destinationChannel = new FileOutputStream("c:\Foto1_copiado1.jpg").getChannel();
sourceChannel.transferTo(0, sourceChannel.size(), destinationChannel);
} catch (FileNotFoundException f) {
System.err.println("O arquivo não foi encontrado! Erro: " + f.getMessage());
} catch (Exception e) {
} finally {
if (sourceChannel != null)
try {
sourceChannel.close();
} catch (IOException e) {
e.printStackTrace();
}
if (destinationChannel != null)
try {
destinationChannel.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}[/code]
Tenta fazer assim para copiar os arquivos de dentro do .jar:
[code] public void copiaArquivo(){
try {
FileChannel arquivo_entrada = new FileInputStream(new File(getClass().getResource("/com/jns/util/swing/rsrc/icons/date.png").getFile())).getChannel();
FileChannel arquivo_saida = new FileOutputStream(“C:/arquivo_teste.png”).getChannel();
arquivo_entrada.transferTo(0, arquivo_entrada.size(), arquivo_saida);
} catch (Exception e) {
e.printStackTrace();
}
}[/code]
Oi joyle, como vai?
Cara seguí suas instruções mas continua não encontrando, só que desta vez não encontra nem via Eclipse, quero dizer, quando uso esse esquema de por dentro do pacote não encontra nem no Eclipse, vide código dois prints da minha tela:
[code]package principal;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.nio.channels.FileChannel;
public class Principal2 {
public static void main(String[] args) {
new Principal2().copiaArquivo();
}
public void copiaArquivo(){
try {
FileChannel arquivo_entrada = new FileInputStream(new File(getClass().getResource("/principal/Foto1.jpg").getFile())).getChannel();
FileChannel arquivo_saida = new FileOutputStream("C:/arquivo_teste.jpg").getChannel();
arquivo_entrada.transferTo(0, arquivo_entrada.size(), arquivo_saida);
} catch (Exception e) {
e.printStackTrace();
}
}
}[/code]
Agora funcionou o mesmo código isso porque coloquei o projeto na raíz, na unidade c:. Mas de qualquer maneira, só funciona no Eclipse, ao gerar o .jar
back to zero, volta a questão de não encontrar os mesmos.