Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

578
Vistas
¿Por qué la imagen de tiempo de ejecución (ensamblada por jlink) para mi aplicación JavaFX no se inicia y no funciona correctamente?

Tengo un navegador web JavaFX simple que es un módulo. La estructura de directorios del módulo es:

 webBrowser webBrowser/module-info.java webBrowser/webbrowser webBrowser/webbrowser/WebBrowser.java

Aquí está el código para module-info.java

 module webBrowser { requires javafx.controls; requires javafx.web; exports webbrowser; }

Aquí está el código para WebBrowser.java:

 package webbrowser; import javafx.application.Application; import javafx.scene.Scene; import javafx.scene.web.WebView; import javafx.scene.web.WebEngine; import javafx.stage.Stage; public class WebBrowser extends Application { @Override public void start(Stage stage) { WebView browser = new WebView(); WebEngine webEngine = browser.getEngine(); webEngine.load("http://www.oracle.com"); Scene scene = new Scene(browser, 1200, 900); stage.setScene(scene); stage.show(); } public static void main(String[] args) { launch(); } }

Compilo mi aplicación modular con javac:

 % javac -d out --module-source-path . --module-path $JAVAFX --module webBrowser

Puedo iniciar mi aplicación con Java y funciona bien:

 % java --module-path out:$JAVAFX/lib --module webBrowser/webbrowser.WebBrowser

El problema comienza cuando intento ensamblar mi módulo (webBrowser) y los módulos JavaFX usando jlink:

 % jlink --module-path out:$JAVAFX/lib --add-modules webBrowser,javafx.controls,javafx.web --output myjre % myjre/bin/java --list-modules java.base@17.0.1 java.datatransfer@17.0.1 java.desktop@17.0.1 java.net.http@17.0.1 java.prefs@17.0.1 java.xml@17.0.1 javafx.base javafx.controls javafx.graphics javafx.media javafx.web jdk.jsobject@17.0.1 jdk.unsupported@17.0.1 jdk.xml.dom@17.0.1 webBrowser % myjre/bin/java --module webBrowser/webbrowser.WebBrowser Graphics Device initialization failed for : es2, sw Error initializing QuantumRenderer: no suitable pipeline found java.lang.RuntimeException: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer.getInstance(QuantumRenderer.java:283) at javafx.graphics/com.sun.javafx.tk.quantum.QuantumToolkit.init(QuantumToolkit.java:254) at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:264) at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291) at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163) at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071) Caused by: java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.init(QuantumRenderer.java:95) at javafx.graphics/com.sun.javafx.tk.quantum.QuantumRenderer$PipelineRunnable.run(QuantumRenderer.java:125) at java.base/java.lang.Thread.run(Thread.java:833) Exception in thread "main" java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at java.base/sun.launcher.LauncherHelper$FXHelper.main(LauncherHelper.java:1071) Caused by: java.lang.RuntimeException: No toolkit found at javafx.graphics/com.sun.javafx.tk.Toolkit.getToolkit(Toolkit.java:276) at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:291) at javafx.graphics/com.sun.javafx.application.PlatformImpl.startup(PlatformImpl.java:163) at javafx.graphics/com.sun.javafx.application.LauncherImpl.startToolkit(LauncherImpl.java:659) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(LauncherImpl.java:410) at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(LauncherImpl.java:364) ... 5 more

Cuando ejecuto mi aplicación vinculada (arriba), obtengo esta RuntimeException:

 java.lang.RuntimeException: Error initializing QuantumRenderer: no suitable pipeline found

Notas sobre el montaje

Estoy usando jlink para ensamblar tres módulos: javafx.controls, javafx.web y webBrowser.

Pregunta

Mi aplicación funciona bien con Java. Se inicia y funciona correctamente cuando uso este comando:

 % java --module-path out:$JAVAFX/lib --module webBrowser/webbrowser.WebBrowser

Pero recibo un mensaje de error (Error al inicializar QuantumRenderer: no se encontró una canalización adecuada) cuando intento iniciar la imagen en tiempo de ejecución:

 % myjre/bin/java --module webBrowser/webbrowser.WebBrowser

¿Por qué aparece este mensaje de error cuando intento iniciar la imagen de tiempo de ejecución? ¿Cómo puedo hacer que mi navegador web se ensamble y se inicie correctamente?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

Consulte este problema relacionado en el rastreador de openjfx e intente seguir los consejos y los pasos de solución de problemas que se encuentran allí.

Especialmente esta sección sobre la descarga y el uso de los archivos mod en lugar del sdk.

La razón es que está empaquetando los "mods" del SDK, que no tienen las bibliotecas nativas (en el SDK, tenemos jars y bibliotecas nativas).

Puede descargar los módulos JavaFX como jmods, incluidas las clases y las bibliotecas nativas.

Ver:

  • https://gluonhq.com/products/javafx/

y descargue los mods (en lugar del SDK).

A continuación, apunta jlink al directorio de mods.

Aparentemente, el paquete SDK es diferente a otros tipos de distribución como Maven. El paquete SDK separa las clases de Java y las bibliotecas nativas, mientras que el paquete para otras plataformas de entrega no lo hace, por lo que puede ejecutar el SDK, pero no vincularlo.

Consulte la sección de documentos de openjfx sobre cómo crear un tiempo de ejecución desde la línea de comandos. La ruta a usar en el comando jlink se da como

 --module-path $PATH_TO_FX_MODS:mods

no

 --module-path out:$JAVAFX/lib
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda