Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/39: Рейтинг темы: голосов - 39, средняя оценка - 4.59
29 / 3 / 1
Регистрация: 20.08.2010
Сообщений: 41

Путь до jar'a

30.09.2010, 16:49. Показов 7103. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть jar'ник с программой и xml файл с настройками который должен лежать в папке с джарником, каким образом узнать директорию из которой запускается приложение? Напишите пожалуйста, гугл ничего вразумительного не ответил.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.09.2010, 16:49
Ответы с готовыми решениями:

Системе не удается найти указанный путь. И путь к рабочему столу :С
Подскажите в чем может быть проблема - Открываю ранее деланный проект - и выводит сообщение, что не удается найти указанный путь.....

Возврат на истинный путь, или как вернуться на путь программиста
Доброго времени суток, товарищи! Зайду из далека. Окончил в 14 году универ на программиста, дипломный проект был по базам данных MS...

Как полный путь преобразовать в путь для коммандной строки?
Типа: C:Мои документыМоя Папка в C:Моидок~1Мояпап~1

12
636 / 528 / 165
Регистрация: 01.04.2010
Сообщений: 1,843
30.09.2010, 19:35
Java
1
System.getProperty("user.dir");
0
29 / 3 / 1
Регистрация: 20.08.2010
Сообщений: 41
01.10.2010, 11:48  [ТС]
К сожалению этот метод не подходит, так как в моём случае это путь до пользователя в системе ("C:\Documents and Settings\Admin")

Добавлено через 1 час 52 минуты
А не до запускаемого jar'ника, слышал что можно как то узнать путь до класса в jar'нике, если кто нибудь знает этот способ, или любой другой, помогите пожалуйста.
0
52 / 52 / 10
Регистрация: 25.05.2010
Сообщений: 182
01.10.2010, 14:45
KnightWithKnife, если это 100% винда то можно вополнить системную команду cd(в винде вроде она) и получить ответ
0
29 / 3 / 1
Регистрация: 20.08.2010
Сообщений: 41
01.10.2010, 18:14  [ТС]
time2die, хорошая идея, не подскажешь какой функцией выполнить эту команду?
0
52 / 52 / 10
Регистрация: 25.05.2010
Сообщений: 182
01.10.2010, 19:49
на здоровье
0
29 / 3 / 1
Регистрация: 20.08.2010
Сообщений: 41
04.10.2010, 11:11  [ТС]
Спасибо, но столкнулся с проблемой
Runtime r = Runtime.getRuntime();
Process p = r.exec("cd");
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String s;
while ((s = stdInput.readLine()) != null) {
System.out.println(s);
}
этот код вызывает IOException... но если использовать другие функции например r.exec("help");
то все в порядке(возвращается список команд)... Не смог разобраться в чем проблема...
0
52 / 52 / 10
Регистрация: 25.05.2010
Сообщений: 182
04.10.2010, 11:19
попробуй "dir\n"
на самом деле я не уверен насчет cd, может dir ?
0
29 / 3 / 1
Регистрация: 20.08.2010
Сообщений: 41
04.10.2010, 12:06  [ТС]
тоже бросает IOException, попробовал несколько команд, странно некоторые работают, но те которые относятся к файловой системе вызывают исключение.
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
05.10.2010, 11:24
Вы вообще чем занимаетесь????
Такое понятие как относительный путь, абсолютный путь знаете?
Если заранее известно, где будет лежать XML относительно jar'ника, зачем пути искать, неужели нельзя сделать так:
Java
1
File f = new File("Имя_файла.xml или путь к нему от jar'а");
Дальше можно проверить полный путь до этого файла:
Java
1
f.getAbsolutePath()
Проверить, правильно ли указан путь можно через:
Java
1
if(f.exist())
А путь полюбому будет отмеряться от запускаемого jar'а
P.S. На всякий случай, относительный путь - путь к файлу относительно какого либо другого файла или каталога. Например, если jar лежит в папке C:/MyProgram/Compiled/Program.jar, а XML'ина в C:/MyProgram/Compiled/Conf/cfg.xml (например), то относительный путь от jar'а до XML будет "Conf/cfg.xml".
Если файл лежит выше по дереву каталогов, то "подняться" на один каталог вверх можно с помощью псевдоподкаталога ".." (../../.. - подняться на 3 каталога вверх)
И не парьте мозг рантаймами, это тот еще гемморой.
0
29 / 3 / 1
Регистрация: 20.08.2010
Сообщений: 41
05.10.2010, 11:52  [ТС]
Тут такая штука, я запускаю приложение командой из командной строки java -jar "D:\Projects\blablabla\blabla.jar" если я запускаю конкретно из папки с jar'ником то всё в порядке, но если из любой другой папки, то относительно нее считается относительный путь. Например C:\Documents and Settings\Admin>java -jar "D:\Projects\blablabla\blabla.jar" он считает что xml должна лежать в C:\Documents and Settings\Admin ... Хочется чтобы работала в любом случае...
0
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
06.10.2010, 08:36
Ладно, сделаем, как предложили, через процесс, только команда "cd" - это команда MSDOS, венда такую не знает, ее знает только командная строка, поэтому надо сначала вызвать командную строку "cmd", а потом через входной поток процесса дать ей "cd". Жесть одним словом:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
Runtime r = Runtime.getRuntime();
        Process p = r.exec("cmd");
        InputStream is = p.getInputStream();
        OutputStream os = p.getOutputStream();
        ByteArrayOutputStream msg = new ByteArrayOutputStream();
        int b;
        os.write("cd".getBytes());
        os.close();
        while ((b = is.read()) != -1) {
            msg.write(b);
        }
        String s = new String(msg.toByteArray(), "Cp1251");
        JOptionPane.showMessageDialog(null, s);
Но тут еще проблема, русские буквы не отображаются как надо, я даже не удивлен... В общем надо поиграть с кодировками. Вообще у венды кодепейдж 1251.

Добавлено через 8 минут
Во, разобралсо:
Java
1
String s = new String(msg.toString().getBytes("Cp1251"), "Cp866");


Добавлено через 2 минуты
А проблема с путем остается так же

Добавлено через 22 минуты
Можно еще вот так в одну строчку все это сделать:
Java
1
String s = this.getClass().getResource("").toString();
Путь получается жесткий, не важно откуда запускаешь программу.
Но что тут делать с кириллицей, я ума хер приложу
0
29 / 3 / 1
Регистрация: 20.08.2010
Сообщений: 41
06.10.2010, 11:15  [ТС]
Спасибо, последний вариант мне особенно нравится=) А с русскими путями пока не сталкивался
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.10.2010, 11:15
Помогаю со студенческими работами здесь

Файл: Получить полный путь к файлу и записать этот путь в отдельную переменную.
Доброго времени суток.Столкнулся с проблемой в ходе выполнения задачи. Мне нужно получить полный путь к файлу и записать этот путь в...

Недопустимый путь. Убедитесь, что путь указан правильно и
Мне скинули БД, при открытии в ней любого объекта влезает такая ерунда...

Определить путь S, пройденный лодкой (путь=время*скорость)
Скорость лодки в стоячей воде V км/ч, скорость течения реки U км/ч (U<V). Время движения лодки по озеру Т1 ч, а по реке против течения Т2...

Разбить путь к файлу на части - путь, файл и расширение
Как разбить путь к файлу на части - путь, файл и расширение? Например: c:\kuku\part1\name.txt $path=c:\kuku\part1\ $name=name ...

[ODBC] Строка '(нет данных)' задает ошибочный путь. Проверьте, что путь задан правильно и имеет
Ребят, подскажите, есть программка написанная на Delphi (к исходникам доступа нет :( ). В ней залочено подключение к БД (mdb) через ODBC....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru