Java-программы для Windows, Mac и Linux (Unix) - PullRequest
1 голос
/ 04 июня 2011

Я работаю над приложением Java, которое, конечно, должно работать в основных операционных системах с USB-флешки.Для пользователей Mac я включил jars (App и Updater) в программы Apple .app.Теперь: как лучше всего позволить банкам запускать друг друга и использовать относительный путь к папке на флешке.Я спрашиваю, потому что я заметил, что на Mac это похоже на папку .app - это запущенный файл (а не jar внутри), и, таким образом, родительский каталог - это рабочий каталог, где будут храниться все мои файлы.В Windows и Linux это просто какая-то папка MyApp.app, и файлы будут внутри.Является ли переключение регистра и пути по коду действительно единственным способом решения этой проблемы?Спасибо

Ответы [ 2 ]

2 голосов
/ 04 июня 2011

Вы можете спросить JVM о физическом местонахождении данного класса. От http://www.exampledepot.com/egs/java.lang/ClassOrigin.html:

// Get the location of this class
Class cls = this.getClass();
ProtectionDomain pDomain = cls.getProtectionDomain();
CodeSource cSource = pDomain.getCodeSource();
URL loc = cSource.getLocation();  // file:/c:/almanac14/examples/

Это работает даже для jar-файлов.

Когда вы знаете местоположение, вы можете перемещаться оттуда.

1 голос
/ 04 июня 2011

Наилучшим вариантом будет создание модулей запуска для каждой из операционных систем, и из этих модулей запуска вызывать JVM для запуска jar.Для Linux создайте сценарий оболочки, на Mac это будет .app (или сценарий оболочки тоже), а в Windows будет работать .bat или исполняемый файл.

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