style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">

¿puedo abrir jnlp de javaFX fuera de netbeans?

Antes que nada saludo ala toda la comunidad, bueno nose si alguien pueda ayudarme con el dilema que tengo, en mi trabajo como estamos viendo como realizar sistemas scada para aplicaciones de control industrial, se me ocurrio que podrian implementar en java pero un compañero al ver lo que es javafx comento que seria mas visual si lo hacia en javafx. Entonces lo realice la aplicacion en javafx controlando un plc, pues estaba feliz por que todo funsiona, solo que se tiene un pequeño inconveniente al tratar de correr mi aplicacion .jnlp en otra computadora sin tener instalando el NetBeans generalmete me marca un error:

java.net.ConnectException: Connection refused: connect
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(Unknown Source)
at java.net.PlainSocketImpl.connectToAddress(Unknown Source)
at java.net.PlainSocketImpl.connect(Unknown Source)
at java.net.SocksSocketImpl.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at java.net.Socket.connect(Unknown Source)
at sun.net.NetworkClient.doConnect(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.openServer(Unknown Source)
at sun.net.www.http.HttpClient.(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.http.HttpClient.New(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getNewHttpClient(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.plainConnect(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.connect(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doRequest(Unknown Source)
at com.sun.deploy.net.BasicHttpRequest.doGetRequest(Unknown Source)
at com.sun.deploy.net.DownloadEngine.actionDownload(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResourceCacheEntry(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.deploy.net.DownloadEngine.getResource(Unknown Source)
at com.sun.javaws.Launcher.updateFinalLaunchDesc(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.prepareToLaunch(Unknown Source)
at com.sun.javaws.Launcher.launch(Unknown Source)
at com.sun.javaws.Main.launchApp(Unknown Source)
at com.sun.javaws.Main.continueInSecureThread(Unknown Source)
at com.sun.javaws.Main$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)

Nose si alguien me podria orientar para resolver este problema de como poder ejecutar mi aplicaion en JavaFx .jnlp sin necesidad del NetBeans

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Nopalin

Si se puede

Mira, antes que nada debes entender como funciona eso del javafx.

JavaFx es una tecnologia que hicieron los de sun para proporcionar al lenguaje la capacidad de hacer animaciones tipo flash, o en otras palabras, programaron nuevas clases java para hacer eso. Pero para verse mas monos, crearon el JavaFx scripting, es decir, un nuevo lenguage con un nuevo compilador que al final lo que hace es agarrar tus archivos en javafx y compilarlos a bytecodes para que la máquina virtual los ejecute.

Como querian tener bien controlado el asunto (es decir, que ahora si una aplicacion pueda correr en el web o en el escritorio o donde sea sin ningun problema), te forzaban a que lo corrieras jnlp (y jvm se encargaba de bajar todas las dependencias) o lo ejecutabas como app de escritorio, con el inconveniente que te tienes que instalar el sdk para tener las dependencias en sistema.

Segun entiendo tu post, estás teniendo problemas para configurar el jnlp en la máquina donde va a correr la aplicacion. Para lograr eso tienes que instalar un contenedor de servlets como tomcat y configurar tu aplicacion, o instalar uno muy simple como jetty pero con alto grado de dificultad al configurar, por que al menos tomcat ya trae el servlet para jnlp pero jetty.

Lo que yo te recomiendo es mejor que lo ejecutes como aplicacion de escritorio. Para lograr ésto primero identifica todos los jars de los que depende tu aplicacion, por ejemplo todos los jars de javafx y los jars de terceros que ocupaste. Para identificar los de javafx, en la carpeta lib de la instalacion del sdk existen varios profiles, el tuyo seguramente es desktop por ejecutarse en una compu, tambien checa lo de la carpeta shared, aqui te pego un lista de jars que yo saque y que distribuyo con mi aplicación (estan como fileset's de ant):

         <!--
                JavaFX fileset
         -->
        <fileset id="javafx.shared.fileset" dir="${javafx.home}/lib/shared">
                <include name="javafxrt.jar"/>
        </fileset>
       
        <fileset id="javafx.desktop.fileset" dir="${javafx.home}/lib/desktop">
                <include name="eula.jar"/>
                <include name="javafx-anim.jar"/>
                <include name="javafx-geom.jar"/>
                <include name="decora-runtime.jar"/>
                <include name="decora-j2d.jar"/>
                <include name="decora-jsw.jar"/>
                <include name="Decora-SSE.jar"/>
                <include name="Decora-D3D.jar"/>
                <include name="decora-j2d-rsl.jar"/>
                <include name="Decora-OGL.jar"/>
                <include name="decora-j2d-jogl.jar"/>
                <include name="javafx-sg-common.jar"/>
                <include name="javafx-sg-swing.jar"/>
                <include name="javafx-ui-common.jar"/>
                <include name="javafx-ui-desktop.jar"/>
                <include name="javafx-ui-swing.jar"/>
                <include name="javafx-ext-swing.jar"/>
                <include name="jogl-common.jar"/>
                <include name="jogl-awt.jar"/>
                <include name="fxdloader.jar"/>
                <include name="jmc.jar"/>
                <include name="websvc.jar"/>
                <include name="javafx-ui-controls.jar"/>
                <include name="javafx-ui-charts.jar"/>
                <include name="script-api.jar"/>
                <include name="javafx-common.jar"/>
                <include name="javafx-io.jar"/>
        </fileset>

Tambien debes tomar en cuenta si estas ocupando funciones nativas del sistema para que copies los .dll o .so a tu library path que son las que las tienen implementadas, como por ejemplo OpenGL para gráficos, etc.

Ya una vez habiendo identificado todos los jars, lo ejecutas como una aplicacion normal java, excepto que el main class es otro, te pongo un ejemplo:

java -cp "jar1.jar:jar2.jar....:todosjar.jar"  com.sun.javafx.runtime.main.Main MainJavaFXScript=mi.clase.main.en.JavaFx

El main class que ejecutas en un main de javafx y le pasas como parametro tu mainclass de javafx, ¿algo simple no?. Espero te funcione.

Sobres

Gracias

Dicide tomar la segunda idea, que me comentastes muchas gracias

style="display:inline-block;width:728px;height:90px"
data-ad-client="ca-pub-5164839828746352"
data-ad-slot="7563230308">