Ejecute java incluido en .app desde la línea de comandos

La pregunta es ¿cómo ejecuto alguna aplicación escrita en Java y empaquetada en el paquete .app desde la línea de comandos?

El objetivo principal de esto es ejecutar una aplicación bajo JDK7. Así que lo comenzaré con el javaincluido en JDK7 en lugar del predeterminado.

Necesito algo como https://apple.stackexchange.com/a/10253/15553 pero con Java, para poder ejecutarlo con un JDK diferente.

Es mejor usar un * .jar, luego un * .app. Los paquetes de aplicaciones se crean específicamente para Objective-c/c/c++, etc. Es posible que pueda crear una aplicación improvisada, pero eso no tendría sentido porque tendría que ejecutarla manualmente de todos modos
$Java /Aplicaciones[...]/*.app/[...]/java-ejecutable ¿Es esto lo que quieres decir? Porque desde mi experiencia esto no funcionará.
Su mejor opción es crear un paquete de aplicación que inicie la aplicación java usando c, usando la familia de funciones exec
@rubixibuc Tengo NetBeans.app. Y necesito ejecutarlo bajo JDK7. ¿Hay alguna forma de hacerlo, excepto apuntar /usr/bin/javaun javabinario en el paquete JDK7?
Tal vez no lo entienda bien, pero lo que haría si sabe c u Objective-C, es simplemente hacer que el binario inicie el archivo con exec(). linux.die.net/man/3/exec

Respuestas (2)

Para cambiar a otra JVM, intente modificar la variable de entorno JAVA_HOMEy PATHshell en ~/.profile.

# in ~/.profile
# switch to another JVM (here, 1.7)
unset JAVA_HOME PATH
export JAVA_HOME="$(/usr/libexec/java_home -F --version 1.7 2>/dev/null)"
export PATH="${JAVA_HOME}/bin:${PATH}"

# general info on Java preferences
open -a 'Java Preferences'
Es una buena idea. Pero estoy buscando una solución para ejecutar solo una aplicación con un java. La creación de la secuencia de comandos que cambiará Java, iniciará la aplicación y cambiará si retrocede también es una opción. De todos modos, el problema se resuelve porque el binario ejecutable de Netbeans Unix permite establecer una casa de JDK como parámetro. Pero la pregunta sigue siendo interesante, y has señalado la mejor solución de trabajo hasta ahora.

O abra el archivo .app y edite o agregue el JVMVersionvalor en Info.plist así

<key>JVMVersion</key>
<string>1.6+</string>
No funciona. ni 1.6+ni1.7+
Tal vez te falten algunas otras claves de Java allí. Echa un vistazo a este enlace