Я работаю над проектом, а одно требование - если второй аргумент для основного метода начинается с '/' (для linux), он должен рассматривать его как абсолютный путь (не проблема) , но если он не начинается с '/', он должен получить текущий рабочий путь класса и добавить к нему данный аргумент.Получение текущего имени класса, включая пакет
я могу получить имя класса несколькими способами: System.getProperty("java.class.path")
, new File(".")
и getCanonicalPath()
, и так далее ..
Проблема заключается в том, это только дает мне каталог, в котором хранятся пакеты - то есть, если у меня есть класс, хранящийся в «.../project/this/is/package/name», он даст мне только «/ project /» и игнорирует имя пакета, в котором находятся фактические файлы .class.
Любые предложения?
EDIT: Вот объяснение, взятый из описания упражнений
SourceDir может быть абсолютным (начиная с «/»), или относительно того, где мы запускаем программу из
SourceDir является заданным аргументом для основного метода. как я могу найти этот путь?
Что вы будете делать, если код упакован в JAR (иначе он не находится в структуре папки/файла, как вы предполагаете)? Это опасное предположение; это может сработать для небольшого эксперимента, присвоения класса или другой ситуации с возможностью одноразового использования, но ПОЖАЛУЙСТА, не привыкните делать это предположение для кода производственного качества. –
Нет смысла искать путь к файлу класса.Также в описании упражнения не упоминается, что если вы внимательно его прочитаете (*, где мы запускаем программу из *, означает текущий путь, из которого программа вызывается пользователем). –
Возможно, вы могли бы помочь мне лучше понять это требование? Мне нужно проверить, что аргумент начинается с '/' (упоминание в описании). если это так, просто используйте его как абсолютное. как есть. но если это не так, как мне его лечить? –