У меня есть OSX App-Bundle для Java-приложения, которое использует не Java-заглушку, а Shellscript (зарегистрирован через Info.plist).Я также зарегистрировал свое расширение файла в Info.plist:
…
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeName</key>
<string>My File Type Name</string>
<key>LSHandlerRank</key>
<string>Owner</string>
<key>CFBundleTypeExtensions</key>
<array>
<string>ext1</string>
<string>ext2</string>
</array>
<key>CFBundleTypeRole</key>
<string>Editor</string>
<key>CFBundleTypeMIMETypes</key>
<array>
<string>application/ext1</string>
<string>application/ext2</string>
</array>
</dict>
</array>
…
Это то, что было необходимо, чтобы LaunchService распознавал мои файлы и связь с моей программой.
Насколько японять документы Apple Devel. Теперь мне нужно зарегистрировать обработчик открытия файлов в Java, чтобы файлы открывались путем перетаскивания их на значок приложения, например, (на Java 3, обновление 3):
Application.getApplication().setOpenFileHandler( new OpenFilesHandler() {
@Override
public void openFiles( OpenFilesEvent arg0 ) {
Debug.debug( "Opening a bunch of files on osx." );
for( File file : arg0.getFiles() ) {
Debug.debug( "Opening: " + file.getAbsolutePath() );
// Custom open action
FileActions.openFile( file );
}
}
} );
MyПервая проблема: этот обработчик никогда не получает удар - нет сообщения отладки и файлы не открываются.
Вторая проблема может быть связана: я могу дважды щелкнуть соответствующий файл, и приложение откроется, если нетБег.Поскольку я использую собственный сценарий оболочки для запуска приложения, я решил добавить какой-то параметр или около того.Сначала это мой стартовый скрипт:
#!/bin/bash
BASEDIR=$(dirname "$0")
cd "$BASEDIR/../Resources/Java/"
java -Xdock:icon="../ico.icns" -Xmx256m -jar "core/myjar.jar"
Для целей тестирования я добавил «1» в свой список аргументов - 1 $ - это PSN из системы… Как мне подключить Событие открытия файла к PSN - илиЕсть ли другой способ сделать это (с помощью пользовательского сценария оболочки).