2011-09-21 8 views
8

Me gustaría asociar un tipo de archivo específico con mi aplicación, por lo que cuando hago doble clic en uno de los archivos de este tipo específico, se abre mi aplicación. Esto funciona bien, pero el archivo en el que hice doble clic no pasa como argumento a mi programa.¿Cómo paso un archivo como argumento a mi aplicación Java creada usando JAR Bundler?

Si por ejemplo asocio con mi solicitud txt archivos y hacer doble clic todo.txt, abre mi solicitud, pero no tengo ni idea de lo que me hace doble clic en el archivo txt.

De lo que puedo leer, así es como se supone que es a trabajar en OS X, y en lugar de confiar en el comportamiento por defecto (como funciona el ejemplo de Windows), que debe utilizar ApplicationListener.handleOpenFile(); de com.apple.eawt. Cuando intento esto, sin embargo, se me ha informado de que no estoy autorizado para hacerlo: restricción

acceso: El tipo ApplicationListener no es accesible debido a la restricción en biblioteca necesaria /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contenido/Clases/ui.jar

en another question here, un chico dice que encontró la solución en some Chinese website, y el otro dice que no es legal según el acuerdo de licencia de Java condiciones.

No puedo encontrar ninguna mención de ello en el Mac OS X Developer Library, y los enlaces que parezcan útiles en this site about JAR Bundler me acaban de enviar a a dead page on Apple's Developer site.

¿Qué me estoy perdiendo? ¿Se supone que es casi imposible hacer esto, aunque es trivial en otros sistemas operativos?

Es probablemente vale la pena mencionar ... desde JAR archivos no pueden ser asociados a los programas en OS X, he creado una aplicación OS X Bundle usando JAR Bundler; una herramienta de Apple hecha específicamente con el propósito de poder tratar aplicaciones Java como aplicaciones nativas de OS X. Usar esto es lo que me permitió asociar el tipo de archivo con mi aplicación en primer lugar.

Respuesta

2

He usado OSXAdapter para las preferencias, acerca de y para salir de la funcionalidad. Es posible que pueda aprovechar su enfoque introspectivo para evitar la restricción. Como com.apple.eawt.ApplicationListener está en desuso, puede intentar com.apple.eawt.OpenFilesHandler en su lugar.

+0

'OpenFilesHandler' me da el mismo error de restricción de acceso que antes. Además, no he podido encontrar nada en el 'Adaptador OSX' - ¿no hay documentación disponible para ello? – kba

+0

Acabo de hacer clic en 'Descargar código de muestra' y he escrito' ant run'. Del 'README.txt':" El ejemplo también admite la entrega de documentos desde el Finder implementando el método 'handleOpenFile' y registrándose para los tipos de archivos admitidos en su archivo' Info.plist' ". – trashgod

+0

Gracias, eso (eventualmente) funcionó. Pero en serio, joder a quien haya decidido que 'try {...} catch (Exception ex) {}' haya sido una buena idea. Difícil de depurar cuando no aparece nada en la consola. – kba

Cuestiones relacionadas