¿Cómo dirigir una aplicación para usar una versión específica de Java?

Obtuve una aplicación Java que funciona bajo Java 1.8 sin problemas cuando inicio su JAR directamente. Sin embargo, en mi Mac, el JAR está envuelto dentro de una aplicación que me exige instalar Java 1.6, ¡lo que realmente no quiero hacer!

Así que estoy buscando el punto dentro del package de la aplicación donde pude configurar que mi aplicación use el Java 1.8 instalado

Cambiar la propiedad de la InfoDictionary version dentro de Contents/Info.plist a 8.0 no ayudará.

¿Es posible esto o necesito crear un package de aplicaciones completamente nuevo? En el caso de lo último, ¿qué herramienta sería la mejor para hacer esto para un montón de aplicaciones?

  • León resolviendo nombres DNS al consultar el server directamente, pero no cuando se usa en un command o aplicación
  • Cómo deshabilitar la selección de caracteres especiales cuando se mantiene presionada una tecla
  • Windows 10 funciona muy lentamente en Parallels 10
  • Problemas de visualización del menu después de actualizar a Sierra
  • Para ver las imágenes en iTunes Album Artwork Cache?
  • En Mountain Lion, ¿por qué las shells remotas a través de ssh NO henetworkingan el entorno del process principal de launchd?
  • Variable de entorno para la carpeta Documentos de un usuario?
  • Cambio automático a la window de inicio de session después de iniciar session automáticamente en MacOS Sierra
  • 3 Solutions collect form web for “¿Cómo dirigir una aplicación para usar una versión específica de Java?”

    Esto podría ayudar a comenzar a encontrar una respuesta. Recordando que PyCharm.app hace algo similar, aquí hay un extracto del file Info.plist de las aplicaciones (mire las … líneas de recorte aquí):

     …snip… <key>JVMOptions</key> <dict> …snip… <key>JVMVersion</key> <!-- string>1.6*,1.7+</string --> <string>1.7+</string> …snip… </dict> …snip… 

    Además, la aplicación PaperCut Client (PCClient) utiliza algunos elementos similares en su Info.plist :

     <plist version="1.0"> <dict> …snip… <key>CFBundleExecutable</key> <string>JavaAppLauncher</string> <key>JVMRuntime</key> <string>jre</string> <key>JVMMainClassName</key> <string>biz.papercut.pcng.client.uit.UserClient</string> <key>JVMOptions</key> <array> <string>-Dclient.home=$APP_ROOT/Contents/Resources/</string> <string>-Dcom.apple.macos.useScreenMenuBar=true</string> <string>-Xmx256m</string> <!-- Workaround since the icon parameter for bundleapp doesn't work --> <string>-Xdock:icon=$APP_ROOT/Contents/Resources/client-icon.icns</string> </array> <key>JVMArguments</key> <array/> </dict> </plist> 

    Nuevamente, estas son partes de diferentes files Info.plist por lo que es posible que no funcionen como copyr y pegar directamente. Sin embargo, ambas aplicaciones funcionan en OS X, por lo que estas keys / valores pueden ayudarlo a limitarse a una solución funcional.

    Ambas aplicaciones parecen tener una forma ligeramente diferente de hacer las cosas. PCClient.app parece include su propia versión de Java, mientras que PyCharm se basa en lo que está instalado en OS X.

    Gracias a una publicación en SuperUser , esto parece ser bastante sencillo. Parece que se pueden llamar diferentes versiones de Java desde el propio JRE de Apple:

     /usr/libexec/java_home -v 1.6.0 --exec <Java command> 

    Tengo entendido que esto no proporciona un JRE diferente, sino que simplemente hace que el JRE instalado se identifique como la versión llamada e implementa cualquier diferencia menor entre las versiones. Otros definitivamente deberían corregirme si este no es el caso.

    Para sus propósitos, esto sería

     /usr/libexec/java_home -v 1.6.0 --exec java -jar <yourJarHere>.jar 

    La publicación vinculada anterior también señala que puede editar el file llamado /Applications/yourApp.app/Contents/MacOS/yourApp para usar el command correcto, por lo que no necesita volver a escribirlo ni recordarlo todo el time.

    Todo esto cortesía de Geff

    Parece que Oracle podría haber arreglado esto. Pero no …

    Así que lo tengo trabajando ahora haciendo esto: (Todos los créditos van a: https://oliverdowling.com.au/2014/03/28/java-se-8-on-mac-os-x )

    Supongo que tiene instalado el último JDK (actualmente 1.8.0_60, por favor ajuste esto en el futuro)

    Cambiar el contenido de Info.plist:

    Abra la Terminal y emita este command

     sudo nano /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Info.plist 

    Busque las JVMCapabilities key de JVMCapabilities y cámbielo a esto:

     <key>JVMCapabilities</key> <array> <string>CommandLine</string> <string>JNI</string> <string>BundledApp</string> </array> 

    Agregue un enlace de sum a libjvm.dylib:

    Abra la Terminal y emita estos dos commands:

     sudo mkdir -p /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bundle/Libraries sudo ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/jre/lib/server/libjvm.dylib /Library/Java/JavaVirtualMachines/jdk1.8.0_60.jdk/Contents/Home/bundle/Libraries/libserver.dylib 
    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).