頻繁に起動される(かなり小さなタスクを実行する)Groovyシェルスクリプトを開発しているため、JVMの起動時間を短縮する必要があります。それを達成するために、私はネイルガンでそれを起動しようとしています。
NailgunをUbuntuパッケージとしてインストールしました。次に、にリンクして引数のバグを修正しました。私はこのようにNailgun-Serverを起動しています:/usr/bin/ng-server
/usr/bin/ng
java -cp /usr/share/java/nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer
ネイルガンサーバーをテストするためだけに、hello.groovyという名前のこの単純なダミーのGroovyスクリプトがあります。
#!/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)
では、NailgunサーバーでGroovyスクリプトを起動する正しい方法は何ですか?また、ネイルガンの使い方に関するいくつかの良いサイト/チュートリアルをいただければ幸いです。ネイルガンの使い方に関する情報を得るのは本当に難しいです...
編集:
また、純粋なJavaクラスでネイルガンを使用するための完全な例(特定のクラスがngで呼び出される方法を含む)もありがたいです。ngをJavaクラスで動作させることもできなかったからです。