no se puede resolver el símbolo javafx.application en IntelliJ Idea IDE

81

Intenté crear una aplicación JavaFX en IntelliJ Idea IDE pero obtuve un error de compilación que decía:

java: el paquete javafx.application no existe.

Cambié el SDK del proyecto y el nivel de lenguaje del proyecto a Java 8, recargué el proyecto, pero no ayudó. Luego verifiqué si el complemento JavaFX estaba habilitado en la configuración.

La búsqueda en Google y StackOverflow no me dio más ideas de lo que está mal. Gracias de antemano por cualquier ayuda.

PD: Estoy usando IntelliJ Idea 14.0 con java8.1.0_25 en archlinux OS.

rob111
fuente
¿Está compilando contra el jdk o el jre? asegúrese de que sea el jdk.
Stav Saad

Respuestas:

97

Como se indica aquí , JavaFX ya no se incluye en openjdk.

Así que verifique, si tiene <Java SDK root>/jre/lib/ext/jfxrt.jaren su classpath debajo Project Structure -> SDKs -> 1.x -> Classpath? Si no, esa podría ser la razón. Intente agregarlo y vea si eso soluciona su problema, por ejemplo, en Ubuntu, instale y luego abra el paquete con sudo apt-get install openjfx.

Ryan J
fuente
No tengo este archivo en Classpath y en la carpeta raíz del SDK. No sé por qué mi java que instalé desde AUR no tiene el archivo jfxrt.jar.
rob111
Mi consejo sería ir a Oracle y obtener la distribución adecuada para su sistema operativo.
Ryan J
2
He agregado el archivo jfxrt.jar al directorio apropiado y lo agregué a los SDK. Ahora mi IDE reconoce javafx PERO tengo tiempo de ejecución La inicialización del dispositivo de gráficos de excepción falló para: es2, sw Error al inicializar QuantumRenderer: no se encontró una tubería adecuada java.lang.RuntimeException: java.lang.RuntimeException: Error al inicializar QuantumRenderer: no se encontró una tubería adecuada, ¿qué hago? tienes que ahora?
rob111
Desafortunadamente, parece que tiene un problema de configuración del sistema ... No estoy seguro de qué puede hacer para solucionarlo, ya que no sé qué tan personalizada es su distribución particular de Linux.
Ryan J
24

Esta debería ser tu solución perfecta. Prueba y disfruta. Si algún comando no funciona correctamente, eso significa que si obtiene algún error, intente resolverlo usted mismo. Te he dado lo principal que necesitas. Si su aplicación está en una ubicación diferente, o la arquitectura de su sistema es diferente, resuélvala usted mismo. Es muy fácil hacerlo. Simplemente siga mi solución dada.

Paso 0:

sudo apt-get install openjdk-8-jre

Paso 1

sudo apt-get install openjfx

Paso 2:

sudo cp /usr/share/java/openjfx/jre/lib/ext/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

Paso 3:

sudo cp /usr/share/java/openjfx/lib/* /usr/lib/jvm/java-1.8.0-openjdk-amd64/lib

Etapa 4:

sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64

ahora abra un nuevo proyecto o reconstruya su proyecto. Buena suerte.

Himel Rana
fuente
1
OP está usando Arch Linux que no tiene APT
xdevs23
4
sudo chmod 777 -R /usr/lib/jvm/java-1.8.0-openjdk-amd64es una mala idea! ¡No lo hagas!
Karl Richter
Karl Richter. Como desarrollador. Para fines de desarrollo, puede hacer esto. Dar permiso al 777 es malo para las empresas y el usuario en general. Como eres desarrollador, no debería ser un problema. Conoce bien su sistema operativo. >> Además, si lo desea, puede hacer masa investigando más sobre este problema. Gracias.
Himel Rana
5
Conocer su sistema operativo es una declaración irónica cuando acaba de cambiar los permisos en su sistema de una manera que permite que los rootkits y los virus reescriban el archivo libremente. No importa lo que crea que sabe. NUNCA haga un chmod 777 en archivos del sistema. Los permisos adecuados para esta carpeta son 644. Un simple ls -lhalo mostrará.
Routhinator
16

Puede usar el que viene con IntelliJ: <intellij>/jre64/lib/ext/jfxrt.jar.

Rok Strniša
fuente
13

Debe descargar el paquete java-openjfx de los repositorios oficiales de Arch Linux. (Además, asegúrese de tener el paquete openjdk8-openjdk). Después de hacer eso, abra su proyecto en Intellij y vaya a Project-Structure -> SDKs -> 1.8 -> Classpath e intente eliminar el antiguo JDK que tenía y haga clic en el directorio del nuevo JDK que ahora contendrá jfxrt.jar.

patterkyle
fuente
5
Esto le dice exactamente lo que debe hacer para que Intellij encuentre el paquete que no encuentra actualmente. ¿Cómo es que eso no responde a su pregunta?
patterkyle
2

Es posible que tenga un nivel de idioma del proyecto más bajo que su JDK.

Compruebe si: "Projeckt structure / project / Project-> language level" es más bajo que su JDK. Tuve el mismo problema con JDK 9 y el nivel de idioma estaba configurado por defecto en 6.

Configuré el nivel de idioma del proyecto en 9 y todo funcionó bien después de eso.

Es posible que tenga el mismo problema.

Rafael S
fuente
2

Otra forma de resolver el problema: haga clic con el botón izquierdo del mouse en la carpeta del proyecto en la estructura del proyecto a la izquierda y haga clic en "abrir configuración del módulo" en la lista de acciones. En las nuevas ventanas, haga clic en SDK que está debajo del menú. title "Platform settngs" Luego verifique en la lista "Classpath" si puede encontrar la ruta del complemento jfxrt, de lo contrario, haga clic en el símbolo + a la derecha y seleccione el repertorio del complemento jfxrt (C: \ Archivos de programa \ Java \ jdk1.8.0 \ jre \ lib \ ext \ jfxrt.jar en mi escritorio)

usuario10899964
fuente
2

Aplicación Java de muestra:

Estoy publicando mi respuesta de otra pregunta aquí, ya que está relacionada y también parece resolver el problema en la pregunta.

Aquí está mi proyecto de ejemplo con OpenJDK 12, JavaFX 12 y Gradle 5.4

  • Abre una ventana de JavaFX con el título "¡Hola mundo!"
  • Capaz de crear un archivo zip de distribución que funcione y se pueda ejecutar (Windows se probará)
  • Capaz de abrir y ejecutar en IntelliJ sin configuración adicional
  • Capaz de ejecutar desde la línea de comando

Espero que alguien encuentre útil el proyecto Github.

Instrucciones para el estuche Scala :

Además, a continuación se muestran las instrucciones que funcionan con el complemento Gradle Scala , pero no parecen funcionar con Java . Dejo esto aquí en caso de que alguien más también esté usando Scala, Gradle y JavaFX.

1) Como se menciona en la pregunta, es necesario configurar el complemento JavaFX Gradle. Open JavaFX tiene documentación detallada sobre este

2) Además, necesita el SDK de JavaFX para su plataforma descomprimido en algún lugar. NOTA: asegúrese de desplazarse hacia abajo hasta la sección Últimas versiones donde está JavaFX 12 (LTS 11 es el primero por alguna razón).

3) Luego, en IntelliJ, vaya a File -> Project Structure -> Libraries, presione el botón ➕ y agregue la libcarpeta del SDK JavaFX descomprimido.

Para obtener instrucciones más largas con capturas de pantalla, consulte los excelentes documentos Open JavaFX para IntelliJ. No puedo hacer que funcione un enlace profundo, así que seleccione JavaFX and IntelliJy luego Modular from IDEdesde la navegación de documentos. Luego, desplácese hacia abajo hasta el paso 3. Create a library. Considere revisar los otros pasos también si tiene problemas.

Es difícil decir si esta es exactamente la misma situación que en la pregunta original, pero parecía lo suficientemente similar que llegué aquí, así que estoy agregando mi experiencia aquí para ayudar a otros.

Peter Lamberg
fuente
2

En IntelliJ Idea,

Verifique que las siguientes cosas estén configuradas correctamente,

Paso 1:

Archivo -> Configuración -> Complementos -> busque javafx y asegúrese de que esté habilitado.

Paso 2: Estructura del proyecto (Ctrl + Shift + Alt + s)

Configuración de plataforma -> SDK -> 1.8 -> Asegúrese de que Classpath debe tener "jre \ lib \ ext \ jfxrt.jar"

Paso 3:

Configuración del proyecto -> Proyecto -> SDK del proyecto - debe seleccionarse 1.8

Configuración del proyecto -> Proyecto -> Nivel de idioma del proyecto - configurado como 8

Ubuntu: si no encuentra jfxrt.jar en sus SDK, instale sudo apt-get install openjfx

Roca
fuente
0

Tuve el mismo problema , en mi caso lo resolví por :

1) vaya a Archivo -> Estructura del proyecto ----> Bibliotecas globales 2) busque jfxrt.jar incluido por defecto en jdk1.8.0_241 \ lib (después de instalarlo) 3) haga clic en + en la parte superior izquierda para agregar nueva biblioteca global y especifiqué la ruta de mi jdk1.8.0_241 Ex: (C: \ Program Files \ Java \ jdk1.8.0_241).

Espero que esto ayude

Objetivo de Djak
fuente