fakt.
Zauważyłem jednak, że uruchomione programy z archiwum .jar mają tendencję
do wypisywania Stringa path w postaci:
file:/C:/katalog
a nie spakowane wypisują poprawnie ścieżkę:
/C:/katalog
Usuwając substringiem "file:" ze ścieżki w końcu działa jak należy, tyle że to nie wydaje mi się eleganckim rozwiązaniem.
Ostatecznie kod wyglądałby tak (może komuś się przyda)
Code: Zaznacz cały
Class c = test.class;
URL classUrl = c.getResource(c.getSimpleName() + ".class");
// URL newUrl = new URL(classUrl, "../../");
String path = classUrl.getPath().replaceAll("%20", " ");
int tmp = path.indexOf("JA7");
String path2 = path.substring(0, tmp);
path2 += "test.ini";
if (path2.substring(0, 5).equals("file:"))
path2 = path2.substring(6, path2.length());
System.out.println(path);
System.out.println(path2);
File plik = new File(path2);
if (!plik.exists())
{
plik.createNewFile();
}
System.out.println(plik.getAbsoluteFile());
Jedno wyjaśnienie: 3 linijka została wykomentowana, gdyż nie wiem dlaczego tym sposobem nowy URL nie może nigdy wyjść wyżej niż nasz plik jar ( u mnie jest to plik: JA7.jar), dlatego później go wycinam.
Zdaje sobie sprawę, że jest to bardzo "nieeleganckie" rozwiązanie i dlatego w dalszym ciągu będę szukał innego.
Może ktoś już zna lepsze i bardziej "elastyczne" ?
pozdrawiam,
rhymie