Я не думаю, что это можно сделать с хорошим, 100% -одно-совместимым способом. Java на самом деле пытается немного отвлечь вас от файловой системы через механизм classpath.
Тем не менее, вы обычно можете получить путь к файлу через загрузчик классов. Первый шаг - получить ссылку на загрузчик классов, который может найти любой интересующий вас ресурс (обычно классный загрузчик для любого из ваших собственных классов будет работать нормально, если у вас более сложный сценарий, вы, надеюсь, знаете, какой загрузчик классов использовать) ,
Тогда вы можете задать загрузчик классов для размещения данного ресурса в качестве URL, например:
final ClassLoader loader = getClass().getClassLoader();
final URL resourceLocation = loader.getResource("com/mycomp/coolapp/checkthis.doc");
Теперь, если вам повезет, то URL будет использовать протокол file:/
, и описать в локальной файловой системе. Если это так, вы можете извлечь этот путь и использовать его в качестве местоположения файловой системы любого ресурса, который вы только что искали. Если он не является ресурсом file:/
, класс может даже не существовать на вашем локальном компьютере (например, он загружается удаленно через RMI), поэтому вам не повезло в любом случае.
Если это звучит сложно - возможно, вы можете перейти в рабочий каталог как системное свойство из сценария запуска Java (например, java ... -Dworking.dir=$(pwd)
).
Вы хотите, чтобы текущий каталог или пакет класса? Расположение файловой системы будет зависеть от того, находится ли она в файле jar и где указан ваш путь к классу. –
Я хочу местоположение в файловой системе, класс Word не находится в банке. Я не знаю, как использовать classpath для его получения. – Federico