Как запустить скрипт Groovy (или класс Java) с помощью сервера Nailgun
Я разрабатываю скрипт оболочки Groovy, который часто запускается (выполняю небольшие задачи), поэтому мне нужно быстрое время запуска JVM. Чтобы добиться этого, я пытаюсь запустить его с Nailgun.
Я установил Nailgun как пакет Ubuntu. Затем я исправил ошибку аргумента, связав /usr/bin/ng-server
в /usr/bin/ng
, Я запускаю Nailgun-Server следующим образом:
java -cp /usr/share/java/nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer
У меня есть этот простой фиктивный скрипт Groovy с именем hello.groovy просто для тестирования nailgun-сервера:
#!/usr/bin/env groovy
def sayHello() {
println("Hello Groovy!");
}
sayHello();
Я скомпилировал файл с groovyc в hello.class.
Теперь я хочу запустить этот скрипт на сервере Nailgun. Мой наивный подход к этому:
ng hello
ng hello.sayHello
Но все, что я получаю, это 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)
Итак, как правильно запустить скрипт Groovy с помощью сервера Nailgun? Я также был бы признателен за несколько хороших сайтов / учебных пособий о том, как использовать Nailgun, очень сложно получить какую-либо информацию о том, как его использовать...
РЕДАКТИРОВАТЬ:
Я также был бы признателен за полный пример (в том числе то, как конкретный класс вызывается с помощью ng) для использования nailgun с чистыми классами Java, поскольку я также не мог заставить ng работать с любым классом Java.
3 ответа
Наконец то понял. Я просто не понял, что мне нужно сначала добавить все необходимые классы в путь к классу Nailgun ( этот вопрос дал мне последние подсказки).
Сначала добавьте Groovy в путь к классам:
ng ng-cp /usr/share/java/groovy-all.jar
Затем добавьте каталог, содержащий скрипт Groovy / класс Java в classpath, в моем случае это:
ng ng-cp /home/$USER/tools/groovy
Теперь я могу запустить свой скрипт на Groovy с помощью Nailgun следующим образом:
ng hello
Я думаю, что jruby.org имеет самое последнее упоминание об этом давно утерянном оружии (которое когда-нибудь должен будет использовать Оракул, так как вялый холодный старт - ахиллесова пята для большинства новых птиц)
ты готовил свой сценарий к занятиям?
тогда "нг... привет" с отличным на пути к классам
мое слепое предположение (слишком ленив, чтобы переустановить мой рейлган после использования rvm для поддержки jRuby)
Я буду удивлен, если hello, который запускается, hello.groovy (интерпретируется), а не скомпилированный hello.class
не устойчивое решение, они должны просто иметь JSR для JVM клиента горячего запуска
так что JVM в режиме клиента запускается в качестве фонового демона, ожидающего запуска процесса Java и устранения всех иллюзий низкой производительности, которую Java всегда терпела
конечно, ради безопасности, производство всегда будет использовать полную точку доступа