Подтвердить что ты не робот

Получение пути к файлу .class, содержащему основной

Можно ли получить путь к моему .class файлу, содержащему мою главную функцию, из основного?

4b9b3361

Ответ 1

URL main = Main.class.getResource("Main.class");
if (!"file".equalsIgnoreCase(main.getProtocol()))
  throw new IllegalStateException("Main class is not stored in a file.");
File path = new File(main.getPath());

Обратите внимание, что большинство файлов классов собраны в JAR файлы, поэтому это не будет работать в каждом случае (следовательно, IllegalStateException). Однако вы можете найти JAR, который содержит класс с помощью этой техники, и вы можете получить содержимое файла класса, заменив вызов getResourceAsStream() вместо getResource(), и это будет работать, будет ли класс включен в файловой системы или в JAR.

Ответ 3

Для чего вам это нужно? Если вам это нужно, чтобы получить файлы, находящиеся в одном каталоге, то для Class.getResourceAsStream(). >

Ответ 4

Это больше похоже на проблему конечного пользователя. Также рассмотрите возможную необходимость запуска нескольких экземпляров любого конкретного приложения и предотвращения того, чтобы пользователи сделали это, станет серьезным раздражением.

Если проблема связана с временными конфликтами файлов, просто убедитесь, что все ваши временные файлы имеют уникальные имена. Это, как я понимаю, является наиболее распространенной причиной, по которой люди чувствуют необходимость предотвратить запуск нескольких экземпляров своих приложений.

P.S.: Методы java.io.File.createTempFile() идеально подходят для предотвращения конфликтов временных файлов, поскольку они автоматически генерируют уникальные имена файлов.