Problem z plikami properties w aplecie

0

Witam.
Mam problem z odczytaniem a konkretniej znalezieniem plików properties w aplecie.
Generalnie, gdy uruchamiam applet pod eclips’em pliki properties znajdywane są bez problemów jednak, gdy uruchamiam applet na stronie dostaję wyjątek informujący o niemożliwości odnalezienia pliku properties dokładniej:

EXCEPTION: message\gui_pl.properties (System nie może odnaleźć określonej ścieżki)
java.io.FileNotFoundException: message\gui_pl.properties (System nie może odnaleźć określonej ścieżki)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(Unknown Source)
	at java.io.FileInputStream.<init>(Unknown Source)
	at src.multi.util.MessageUtil.getMessage(MessageUtil.java:35)
	at src.multi.panel.MainMenuPanel.setLabels(MainMenuPanel.java:116)
	at src.multi.panel.MainMenuPanel.prepareObjects(MainMenuPanel.java:106)
	at src.multi.panel.MainMenuPanel.init(MainMenuPanel.java:64)
	at src.multi.panel.MainMenuPanel.<init>(MainMenuPanel.java:60)
	at src.multi.panel.MainMenuPanel.getInstance(MainMenuPanel.java:53)
	at src.multi.gui.StartApp.prepareObjects(StartApp.java:43)
	at src.multi.gui.StartApp.init(StartApp.java:27)
	at sun.plugin2.applet.Plugin2Manager$AppletExecutionRunnable.run(Unknown Source)
	at java.lang.Thread.run(Unknown Source) 

Struktura pliku jar appletu wygląda tak

- messager
  	    - gui_pl.properties
  	    - gui_en.properties
  	    - gui.properties
- META-INF
- src.multi …(inne pakiety)
- src.multi.util
		- MessageUtil.class

Klasę “MessageUtil” wykorzystuję do odczytania zawartości plików properties

package src.multi.util;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Locale;
import java.util.Properties;

public class MessageUtil {

	static Properties properties = new Properties();

	public static String GUI = "message/gui_";
	private static String EXT = ".properties";

	public static String getMessage(String propertiesName, String key) {
		String message = "";
		try {
			properties.load(new FileInputStream(propertiesName
					+ Locale.getDefault().getLanguage() + EXT));
			message = properties.getProperty(key);
		} catch (FileNotFoundException e) {
			log.exception(e);
			e.printStackTrace();
		} catch (IOException e) {
			log.exception(e);
		}
		return message;
	}
}

Na razię pod zmienną "propertiesName" podstawiam to, co jest pod zmienną statyczną "GUI".

Jednak jak już wspomniałem nie działa mi to na stronie.

0

Miałem podobny problem.

U mnie roziwązanie było proste.

MAsz:

public static String GUI = "message\gui_";

Spróbuj:

public static String GUI = "\message\gui_";

Wiem, że to trywialne ale poważnie po zmianie zadziałało przy czym zaznaczam, że używam netbeans i u mnie bez tych "\" nawet w kompilatorze się nie uruchomiło.

pozdrawiam

Po edycji: teraz zajrzałem do kodu i ja używam ale getResourceAsStream() a nie mam teraz czasu by to przetestować na Twoim kodzie...jak nie znajdziesz rozwiązania to potem postaram się to zrobić.

getResourceAsStream znajdziesz w org.apache.commons.io

0
lipkerson napisał(a)

Miałem podobny problem.

U mnie roziwązanie było proste.

MAsz:

public static String GUI = "message\gui_";

Spróbuj:

public static String GUI = "\message\gui_";

Wiem, że to trywialne ale poważnie po zmianie zadziałało przy czym zaznaczam, że używam netbeans i u mnie bez tych "\" nawet w kompilatorze się nie uruchomiło.

pozdrawiam

Po edycji: teraz zajrzałem do kodu i ja używam ale getResourceAsStream() a nie mam teraz czasu by to przetestować na Twoim kodzie...jak nie znajdziesz rozwiązania to potem postaram się to zrobić.

getResourceAsStream znajdziesz w org.apache.commons.io

A więc próbowałem z "\message\gui_" ale nie pomogło obecnie próbuję z getResourceAsStream() ale bez sukcesu dostaję ten sam błąd.

0

FileNotFoundException - podaj mu pelna sciezke

0
misty napisał(a)

FileNotFoundException - podaj mu pelna sciezke

Chyba nie do końca rozumiem, szukam plików properties które są w katalogu "message" tak jak wskazuje zmienna statyczna GUI. Katalog "message" znajduje się bezpośrednio w pliku jar.

0

Udało się zrobiłem to w sposób jaki zaproponowałeś lipkerson użyłem getResourceAsStream.
Do klasy MessageUtil dodałem coś takiego:

MessageUtil mu =  new MessageUtil();
InputStream is = mu.getClass().getClassLoader().getResourceAsStream(propertiesName+ Locale.getDefault().getLanguage() + EXT);
properties.load(is);

i nie muszę zmieniać zmiennej statycznej GUI

0

ech...dobrze czasami pomóc:-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1