GWT+manipulação de arquivo [RESOLVIDO]

Olá pessoal

informações:

  • SO: ubuntu 9.04
  • IDE: eclipse GALILEO
  • Tomcat 6.0.20
  • GWT 2.0.0
  • JDK 6 - 1.6.0.22

O que acontece é o seguinte:

Tenho um arquivo .properties do lado servidor, e acesso ele em momentos da execução…

rodando o projeto pelo eclipse é tudo tranquilo

mas exportando o .war e colocando ele no Tomcat

tenho a exception…

12/11/2010 12:47:19 org.apache.catalina.core.StandardContext listenerStart
GRAVE: Exception sending context initialized event to listener instance of class br.com.oxcrawl.server.controller.system.action.schedule.StoreSchedulesInContext
java.lang.NullPointerException
at br.com.[projeto].server.controller.system.action.schedule.StoreSchedulesInContext.getSchedules(StoreSchedulesInContext.java:61)

public static List<Schedule> getSchedules(String bundle) {
		URL file = ClassLoader.getSystemResource(bundle.replace('.', '/')
				+ ".properties");

		InputStream fis;
		try {
			fis = file.openStream();

			Properties prop = new Properties();
			
			prop.load(fis);
			
			List<Schedule> schedules = new ArrayList<Schedule>();
			
			Enumeration<Object> enumeration = prop.keys();
			
			while(enumeration.hasMoreElements()) {
				[...]
			}
	
			FileWriter fw = new FileWriter(file.getFile());
			
			prop.store(fw, null);
			
			fis.close();
			fw.close();
			
			return schedules;
			
		} catch (IOException e) {
			throw new UnexpectedException(I18nHelper.getMessage("Property cannot be saved."), e);
		}
	}

O bundle é = “br.com.[projeto].server.controller.application.properties.schedule”

a linha 61 seria a

fis = file.openStream();

entao acredito que o problema é por que la no tomcat ele vai tentar pegar o caminho(/home/usuario… ) q eu consigo com o codigo do jeito que esta hoje e logico isso nao tem la

mas eu queria arranjar um jeito que fosse “genérico” para as duas situações… pois vou publicar hoje, mas continuo mexendo no projeto, entao teria que trocar o jeito de pegar o caminho a cada
vez que vou exportar o projeto ;x

:?

Olá,

tenta substituir as linhas a seguir:

[code]public static List<Schedule> getSchedules(String bundle) {
URL file = ClassLoader.getSystemResource(bundle.replace(’.’, ‘/’)
+ “.properties”);

     InputStream fis;  
     try {  
        fis = file.openStream();  


[/code]

por isso:

public static List&lt;Schedule&gt; getSchedules(String bundle) {  
File file = new File(getServletContext().getRealPath("/WEB-INF/classes/"+bundle.replace('.', '/') + ".properties"));   
         InputStream fis;  
         try {  
               fis = new FileInputStream(file);

...

awesome it works!!! :smiley:

cara muito obrigado, deu certo pras duas formas de rodar o projeto

abraço e obrigado mais uma vez @araujo921