Seguinte pessoal !!
Desenvolvi um aplicação java desktop com spring, e executando ela no eclipse ela executa normalmente
porem quando exporto meu projeto para o arquivo runnable jar
a aplicaçao nao executa, ela nao consegue carregar o arquivo spring-config-context.xml utilizando a seguinte lina de codigo:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext("/spring-config-context.xml");
Alguem tem alguma ideia do que possa estar acontecendo…
ja nao sei mais o que fazer
Tente só new ClassPathXmlApplicationContext(“spring-config-context.xml”); sem a barra
ArtesaoDeSoftware
Se eu fizer so new ClassPathXmlApplicationContext
eu nao vou ter como resgatar os beans
o que acontece é que executo a aplicaçao normalmente no eclipse, mas quando exporto para o arquivo runnabel jar
a app nao executa
Nas minhas aplicações swing com spring eu coloco o arquivo dentro um pakage normal e carrego sem problemas tanto no ambiente de desenvolvimento, quanto no ambiente de produção:
if (ctx == null) {
try {
ctx = new ClassPathXmlApplicationContext("br/unicred/sorteio/context.xml");
} catch (Exception e) {
sistemaErro(e);
}
}
return ctx;
t+ 
Entao eu faço a mesma coisa porém
nao roda de jeito nehum, quando gero o jar da aplicaçao
Dã:
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(“spring-config-context.xml”);
Se o arquivo spring-config-context.xml estiver realmente no seu classpath e sem erros no xml ele vai achar.
mas ele acha o arquivo normal, ta tudo rodando certinho no eclipse
Esse é o codigo que eu uso para carregar o arquivo do spring e executar o formulario principal
@Override
public void run() {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
ClassPathXmlApplicationContext applicationContext = null;
if(applicationContext == null){
try {
applicationContext = new ClassPathXmlApplicationContext("application/spring-config-homologacao.xml");
} catch (Exception e) {
// TODO: handle exception
}
}
App frame = (App) applicationContext.getBean("app");
frame.setDefaultCloseOperation(App.EXIT_ON_CLOSE);
frame.setTitle("SIG - Sistema de Integração Gerencial");
frame.getContentPane().setPreferredSize(frame.getSize());
frame.pack();
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
});
}
É muito estranho mesmo pq se vc esta colocando o arquivo context dentro de uma pacote como se fosse um source normal…não deveria estar dando diferença entre executar na IDE e executar no JAR.
Vc tem certeza que esta enviando o arquivo para dentro do JAR na geração?
simm
quando extraio o arquivo, o arquivo context esta la dentro
jar
Alguem tem alguma ideia do que possa estar acontecendo ???
Eu costumo deixar no pacote src, tanto o spring quanto o hibernate e funciona na boa.
Estranho não funcionar para você.
Posta a exceção que está dando.
Ai é que ta nao estoura nem uma exceçao
pq no eclipse a aplicaçao roda tranquila, so nao roda quando exporto para o aquivo jar
[quote=rxavier]Ai é que ta nao estoura nem uma exceçao
pq no eclipse a aplicaçao roda tranquila, so nao roda quando exporto para o aquivo jar[/quote]
Faz assim:
Vai no modo console, entra no diretório onde você salvou o seu arquivo .jar gerado e então digita: java -jar seuarquivo.jar
Assim a exceção vai aparecer no console.
Essa é a exceçao que dispara:
log4j:ERROR Could not find value for key log4j.appender.R
log4j:ERROR Could not instantiate appender named "R".
log4j:WARN No appenders could be found for logger (org.apache.xbean.spring.conte
xt.ClassPathXmlApplicationContext).
log4j:WARN Please initialize the log4j system properly.
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at application.ApplicationLauncher$1.run(ApplicationLauncher.java:35)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:209)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:597)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThre
ad.java:269)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.
java:184)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThre
ad.java:174)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)
O problema não parece ser esse que você citou. Se ele não encontrasse o arquivo do Spring, a exceção seria outra.
Veja que ele está mostrando como erro algo relativo ao log4j, ele está procurando uma propriedade R e não encontra ou não encontra o valor dela.
Você tem alguma coisa configurada referente ao log4j? Pq ele pode estar buscando algo e não encontrando e por isso o java.lang.NullPointerException.
[quote=rxavier]Esse é o codigo que eu uso para carregar o arquivo do spring e executar o formulario principal
[code]
.
.
.
try {
applicationContext = new ClassPathXmlApplicationContext("application/spring-config-homologacao.xml");
} catch (Exception e) {
// TODO: handle exception
}
.
.
.
[/code][/quote]
Boa tarde RXavier, não te dá exceção nenhuma porque você silenciou o catch, tem um TODO ali comentado, significa que você precisa preenchê-lo.
Coloque pelo menos uma linha com seguinte trecho:
e.printSctackTrace();
Ai você terá uma noção do que acontece quando der um erro.
Para mim o erro está relacionado ao Path onde está o seu arquivo App…xml no Eclipse está no caminho relativo correto, mas ao exportar você pode salvar em um caminho que perde-se o caminho relativo.
Espero ter ajudado!
Depois de ter o erro no console publique aqui para que possamos te ajudar! :thumbup:
Att.