Cómo iniciar un script Groovy (o clase Java) con Nailgun Server

Estoy desarrollando un script de shell Groovy que se inicia con frecuencia (haciendo tareas bastante pequeñas), por lo tanto, necesito un tiempo de inicio JVM rápido. Para lograr eso, estoy tratando de lanzarlo con Nailgun .

He instalado Nailgun como un paquete de Ubuntu. Luego arreglé el error de argumento al vincularlo /usr/bin/ng-servera /usr/bin/ng. Estoy comenzando el Nailgun-Server de esta manera:

java -cp /usr/share/java/nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer

Tengo este simple script falso de Groovy llamado hello.groovy solo para probar el servidor nailgun:

#!/usr/bin/env groovy
def sayHello() {
  println("Hello Groovy!");
}

sayHello();

Compilé el archivo con groovyc en hello.class.

Ahora quiero lanzar ese script dentro del servidor de Nailgun. Mi enfoque ingenuo para hacer eso sería:

ng hello
ng hello.sayHello

Pero todo lo que obtengo son ClassNotFoundExceptions:

java.lang.ClassNotFoundException: hello
    at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:169)
    at com.martiansoftware.nailgun.NGSession.run(Unknown Source)

Entonces, ¿cuál es la forma correcta de iniciar mi script Groovy con el servidor Nailgun? También agradecería algunos buenos sitios / tutoriales sobre cómo usar Nailgun, es realmente difícil obtener información sobre cómo usarlo ...

EDITAR:

También agradecería un ejemplo completo (que incluye cómo se llama a una clase específica con ng) para usar nailgun con clases Java puras, ya que tampoco pude trabajar con ninguna clase Java.

Respuesta 1

Finalmente lo tengo. Simplemente no entendí que primero tengo que agregar todas las clases necesarias al classpath de Nailgun ( esta pregunta SO me dio las pistas finales).

Primero, agrega Groovy al classpath:

ng ng-cp /usr/share/java/groovy-all.jar

Luego agregue el directorio que contiene el script Groovy / clase Java al classpath, en mi caso es:

ng ng-cp /home/$USER/tools/groovy

Ahora puedo ejecutar mi script Groovy con Nailgun así:

ng hello
Respuesta: 2

Creo que jruby.org tiene la referencia más reciente a esta arma perdida hace mucho tiempo (que algún día Oracle debería tomar, ya que el comienzo lento y frío es un talón de Aquiles para la mayoría de las aves nuevas)

¿acabaste tu secuencia de comandos en clases?

entonces 'ng ... hola' con maravilloso en el classpath

Mi conjetura ciega (demasiado flojo para reinstalar mi cañón de riel después de usar rvm para mantener jRuby)

Respuesta: 3

Se informa el siguiente error cuando intento ejecutar una prueba JUnit 5 simple en IntelliJ: 08 de febrero de 2019 3:37:39 PM org.junit.platform.launcher.core.DefaultLauncher handleThrowable ADVERTENCIA: TestEngine ...

Por curiosidad, medí el rendimiento entre el bloque estático y el inicializador del método estático. Primero, implementé los métodos mencionados anteriormente en dos clases Java separadas, así: Primero: clase ...

Todas las secuencias y bufferedReader deben cerrarse. Mi pregunta es, ¿qué sucede si la secuencia y bufferedReader está dentro de un método, los argumentos / parámetros también deben cerrarse? ejemplo de código normal: InputStream ...

Actualmente estoy usando Selenium para probar la interfaz de nuestra aplicación web. Sin embargo, no es muy confiable (es difícil establecer un buen tiempo de espera, absolutamente una pesadilla para trabajar en cualquier página web ...