powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Получить путь к Main классу
11 сообщений из 11, страница 1 из 1
Получить путь к Main классу
    #32468539
Например в Delphi есть возможность получить путь так

Код: plaintext
ExtractFilePath(Application.EXEName);


Очень удобно для поиска всяких там конфигурационных файлов лежащих в одном каталоге с приложением, если рабочая директория другая или была сменена во время работы.

На Java как не пробовал, получить путь к Main классу, мне этого не удалось. В System.getProperties есть пара похожих свойств но всё нето. Подскажите как быть?
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32472253
Фотография stdio
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
ИмяКласса.class.getClassLoader().getResourceAsStream(названиеРесурса-Файла)

_______________
Alex
There are three kinds of people: those who can count and those who can't
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32473174
to stdio

то несколько не то. Допустим у меня есть класс

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
import java.util.*;
import java.io.*;

public class GetClassPath
{
  public static void main(String[] args)
  {
    getSystemProperties();
  }

  public static void getSystemProperties()
  {
    Class cls = new GetClassPath().getClass();

    System.out.println(cls.getClassLoader().toString());
  }
}


Мне надо следующее, чтобы при запуске выдавалось

Код: plaintext
1.
2.
3.
4.
c:\>java -classpath D:\_work GetClassPath
class found in: D:\_work

c:\>java -classpath D:\java\jars\GetClassPath.jar GetClassPath
class found in: D:\java\jars\GetClassPath.jar


Это возможно?
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32473222
Грасоff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
хорош тут всякую хрень нести :)

есть test.jar, его внутренность:
test.jar
--com
----test
------MyClass.class
--resources
----images
------MyImage.png

другими словами: в jar лежит 2 файла:
com/test/MyClass.class
resources/images/MyImage.png

FAQ: как загрузить картинку-икноку MyImage.png в классе MyClass.class?

MyClass.java:

Код: plaintext
1.
2.
3.
4.
...
public void loadMyImage() {
  ImageIcon icon = new ImageIcon(ClassLoader.getSystemResource( "resources/images/MyImage.png" );
}
...
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32473383
Блин, ты чего вопроса не панимаишь? Мне не надо по известному пути, получить или загрузить что то. У меня обратная ситуация.

Расскажу подоплёку если интересно, хотя и для ответа на вопрос это совершенно не требуется. Есть туча классов, которые могут лежать в тех или иных каталогах, в тех или иных jar'ах. Некоторая апликуха запускается с указанием -classpath или же берёт пути из переменной окружения CLASSPATH.
Дело в том что что мы часто натыкались на грабли, что у клиента в CLASSPATH были так же пути к "старой" версии классов и стояли впереди, так что апликуза юзала эти "старые" классы. Сколько времени мы искали причину некоторых проблем, пока не выяснили это.

Вот и нужно мне встроить в апликуху некий дебаг вывод, чтобы если нужно узнать, что например

class BlaBla found in: D:\java\jars\GetClassPath.jar
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32473561
Грасоff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я ответил на первый пост в теме.

Фляга БрагинОчень удобно для поиска всяких там конфигурационных файлов лежащих в одном каталоге с приложением

файл (MyImage.png) нашли? нашли :)
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32473716
Харашо, ну па аснавному вапросу? Помоги плиз. Уже сколько ищу способ и всё без толку.
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32473762
Грасоff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у клиента в CLASSPATH были так же пути к "старой" версии классов

ну так убить эти старые версии..
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32473799
Убить то в принципе можно, но сначала их надо найти с пом. сабжа, какие пути убить. Там classpath километрофой длинны, да и других апликух полно, которые требуют старые вресии. Так что нельзя исключить случая, когда наш клиент что нибудь не так настроит и вуаля. А так можно конкретно узнать какой именно класс юзаится.
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32513878
Андрей2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно так

import java.net.URL;

public class GetClassPath {

public static void main(String[] args) {
getSystemProperties();
}

public static void getSystemProperties() {
String relativePathToClass = GetClassPath.class.getName().replace('.', '/') + ".class";
URL url = GetClassPath.class.getClassLoader().getResource(relativePathToClass);
String pathToClass = url.getFile();
String pathToRoot = pathToClass.substring(0, pathToClass.length() - (relativePathToClass).length() - 1);

System.out.println("Class found in " + pathToRoot);
}
}
...
Рейтинг: 0 / 0
Получить путь к Main классу
    #32974414
Fabrichenko Viktor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Андрей2
...
String relativePathToClass = GetClassPath.class.getName().replace('.', '/') + ".class";
...


GetClassPath.class.getName()
можно заменить на
this.getClass().getName()

ну просто удобнее в плане переносимости :))
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Получить путь к Main классу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]