8 votos

¿Cómo ayudar a la aplicación jEdit a encontrar java?

He instalado jEdit en mi nuevo mac (procesador Intel 11.3.1 Big Sur) pero me da el mensaje

"Esta aplicación requiere que java 11 o posterior esté instalado en su ordenador".

"This application requires that java 11 or later be installed on your computer."

Así que instalé java con brew install java y he seguido las instrucciones para hacer un enlace simbólico y añadirlo a mi PATH de zsh. Todo se ve bien para java en la terminal:

java --version
openjdk 16.0.2 2021-07-20
OpenJDK Runtime Environment Homebrew (build 16.0.2+0)
OpenJDK 64-Bit Server VM Homebrew (build 16.0.2+0, mixed mode, sharing)

...pero cómo puedo decirle a la aplicación jEdit dónde está mi JRE.

También intenté instalar jedit a través de homebrew, pero el resultado fue el mismo.

Si ejecuto el archivo jar en la línea de comandos entonces jedit hace arrancar, aunque con estos errores que aparecen en el terminal (¿importante? tal vez no):

% /usr/local/opt/openjdk/bin/java -jar /Applications/jEdit.app/Contents/Java/jedit.jar
12:39:14 [AWT-EventQueue-0] [error] OSXAdapter: Could not talk to EAWT:
12:39:14 [AWT-EventQueue-0] [error] OSXAdapter: java.lang.IllegalAccessException: class macosx.OSXAdapter cannot access class com.apple.eawt.Application (in module java.desktop) because module java.desktop does not export com.apple.eawt to unnamed module @1ed7437b
...
2021-10-13 12:39:15.678 java[44580:3291018] JavaNativeFoundation: GetGlobalVM: Failed to locate @rpath/libjvm.dylib for JNI_GetCreatedJavaVMs(). A JVM must be loaded before calling this function.

Es una solución, pero quiero poder hacer clic en el icono de la aplicación.

0 votos

¿Qué hace /usr/libexec/java_home -V ¿regresar?

0 votos

16.0.2 (x86_64) "Homebrew" - "OpenJDK 16.0.2" /usr/local/Cellar/openjdk/16.0.2/libexec/openjdk.jdk/Content‌​s/Home

0 votos

¿Qué hace /usr/bin/java --version devolver

5voto

perpil Puntos 1

Acabo de instalar la versión 5.6 en un Mac M1 con Monterey. El uso de este enfoque le permite acceder a los archivos en su carpeta de descargas.

  1. Instale la versión ARM de Java 17 de Oracle

  2. Instalar jEdit 5.6 (Siga las instrucciones para arrastrar y soltar a su carpeta de Aplicaciones y haga Ctrl-Click en ella).

  3. Descargue el binario precompilado de universalJavaApplicationStub

  4. Descomprímelo y sobrescribe el binario /Applications/jEdit.app/Contents/MacOS/jedit con ella, es decir

    cp ~/Downloads/universalJavaApplicationStub /Applications/jEdit.app/Contents/MacOS/jedit
  5. Actualizar la clave JVMVersion en /Applications/jEdit.app/Contents/Info.plist utilizando un editor como TextEdit para ser 17.

    <key>JVMVersion</key>
    <string>17</string>
  6. Iniciar jEdit

Un agradecimiento especial a Kohei Nozaki por la idea

1 votos

La solución de Perpil me ha funcionado. Sólo tengo que cambiar la versión de la JVM a la 18, que es la más reciente.

1voto

Rob Allen Puntos 6376

Las aplicaciones de Mac tienen un info.plist dentro de ellos, donde a veces se puede hurgar en ajustes furtivos.

Para ello, haga clic con el botón derecho del ratón y diga "Mostrar contenido del paquete". Deberías ver un directorio de "Contenidos" y poder editar un archivo "info.plist".

¿Qué ajustes furtivos? Bueno, tengo suficientes pistas de este post del foro de jedit .

Primero necesitamos crear un enlace simbólico desde Plugins (también en el directorio "Contents") hasta donde esté instalado nuestro JDK. En mi caso quería que usara mi JDK instalado en casa, así que necesitaba hacer...

cd /Applications/jEdit.app/Contents/PlugIns

ln -s /usr/local/opt/openjdk/libexec/openjdk.jdk openjdk

(Crea un enlace simbólico llamado "openjdk")

Una vez hecho esto, podemos añadir una entrada en info.plist con el siguiente aspecto

        <key>JVMRuntime</key>
        <string>openjdk</string>

Probablemente no importa en qué parte del archivo. Puse estas dos líneas arriba <key>JVMOptions</key>

Una vez hecho esto, ya puedo hacer clic en el icono de jedit en Aplicaciones, para iniciarlo.

0 votos

Esta solución hace que gEdit funcione, pero no resuelve la desconfiguración general de Java.

0voto

Thor Puntos 117

He instalado Java 11 y jEdit vía homebrew en MacOS Big Sur. Para mí, esto funciona para iniciar jEdit después:

/usr/local/opt/openjdk@11/bin/java -jar /Applications/jEdit.app/Contents/Java/jedit.jar 2> /dev/null &

Por supuesto, puedes simplificar esto añadiendo el binario de java 11 a tu ruta, estableciendo alias o escribiendo una pequeña envoltura de shell script, pero esto es lo que va a funcionar fuera de la caja.

0 votos

¿No funcionará el uso de java en lugar de la ruta completa - como el OP muestra java --versión funciona

0 votos

Por supuesto, si ha añadido esta versión particular de java a su ruta. Brew incluso sugiere esto cuando se instala java 11 a través de brew, pero no quería asumir que todos los que se tropiezan con esto lo han hecho, y como dije en mi respuesta, esa larga línea de comandos va a funcionar en cualquier caso.

0 votos

La pregunta dice que tienen - Así que usted debe asumir que., De todos modos la pregunta creo que es cómo ser capaz de abrir la aplicación y no se ejecuta desde la línea de comandos

0voto

villoez Puntos 19

Sólo para información, como solución publicada con Info.plist Me funciona muy bien.

De todos modos, estaba buscando algo que actuara globalmente, como una configuración o ajuste (furtivo también :-)), que permitiera abrir cualquier UI Java App sin dar mensaje de error:
"Esta aplicación requiere que java 11 o posterior esté instalado en su ordenador".

El medio ambiente es:

  • MBA (Intel) con Big Sur 11.6.1
  • Homebrew con openjdk y jEnv (MacOS-javahome)

1. Usando el comando jEnv 'MacOS-javahome'

El propósito era probar el comando jEnv:

$ jenv macos-javahome

como es debido (el condicional es obligatorio) establece JAVA_HOME para todas las aplicaciones GUI a través de launchctl setenv como se ha dicho aquí :

# Usage: jenv MacOS-javahome

# Instala un archivo ubicado en ~/Library/LaunchAgents/jenv-environment.plist . Establece JAVA_HOME para la GUI
# aplicaciones al inicio para la **versión activa de Java**.

En primer lugar, en Big Sur 11.6.1, no hay ~/Library/LaunchAgents en el directorio de mi perfil.
Lo creé de todos modos, con los permisos adecuados sólo para ir más allá con jEnv y aplicar todos los cambios y reiniciar todo lo necesario.

El resultado final que es esta configuración a través de jEnv es completamente ignorado por UI Java Apps, y todavía obtener error:
"Esta aplicación requiere que java 11 o posterior esté instalado en su ordenador".

\==> Así con jEnv y Big Sur 11.6.1 no funcionan .

2. Modificación de OpenJDK para ejecutar aplicaciones Java

El objetivo era modificar Info.plist de OpenJDK añadiendo BundledApp capacidad, como señaló aquí y aquí .

En resumen, en mi entorno, modificar el archivo /Library/Java/JavaVirtualMachines/openjdk.jdk/Contents/Info.plist de este

<key>JavaVM</key>
  <dict>
    <key>JVMCapabilities</key>
      <array>
        <string>CommandLine</string>
      </array> ...

a este

<key>JavaVM</key>
  <dict>
    <key>JVMCapabilities</key>
      <array>
        <string>BundledApp</string>
        <string>CommandLine</string>
        <string>JNI</string>
      </array> ...

\==> También así con un Info.plist de OpenJDK modificado y Big Sur 11.6.1 no funcionan .

Resultados

Después de probar, ambas formas no funcionan por el momento en mi entorno con Big Sur 11.6.1.

Ese con jEnv no funciona en oposición a lo que jEnv macos-javahome dice el comando. Aquí también parece que las aplicaciones de la interfaz de usuario de Java ignoran completamente la variable de entorno JAVA_HOME, ya sea que se establezca a través de la shell (por ejemplo, zsh) o jEnv macos-javahome .

Ese con la modificación de OpenJDK, aparentemente jEdit App no está buscando esas capacidades de JVM en OpenJDK's Contents/Info.plist .

0 votos

No hay una manera global - ya sea aplicación por aplicación para permitir el uso de diferentes versiones - esta es la manera aprobada por Apple - o ejecutar java desde la línea de comandos como es la manera normal no MacOS

-1voto

curious_george Puntos 11

Mi opinión y una solución indirecta. jEdit es simplemente buscar en tu ruta el binario de java11. Soy un desarrollador de Java desde 1996.

brew install java no te funcionó muy bien, ¿verdad? Yo prefiero no hacerlo así por cuestiones como ésta.

Tener Java en /usr/local/opt se equivoca.

El JDK de Java debería estar en /Library/Java/JavaVirtualMachines . Normalmente descargo manualmente el JDK y lo descomprimo en la carpeta mencionada o lo instalo a través de jenv de mando. El primero te da más control.

Entonces debería tener instalado JENV y tener esto en su .bash_profile :

export PATH="$HOME/.jenv/bin:$PATH"
eval "$(jenv init -)"

No instale Java con brew . En su lugar: brew install jenv . Entonces, instale Java (O enlace a su java instalado) usando JENV .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X