我正在開發一個經常啓動的Groovy shell腳本(執行相當小的任務),因此我需要一個快速的JVM啓動時間。爲了實現這一點,我試圖用Nailgun來啓動它。如何使用Nailgun服務器啓動Groovy腳本(或Java類)
我已經安裝Nailgun作爲Ubuntu軟件包。然後我通過鏈接/usr/bin/ng-server
到/usr/bin/ng
來修復argument bug。我開始了Nailgun - 服務器這樣的:
java -cp /usr/share/java/nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer
我有這個簡單的虛擬命名hello.groovy 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調用特定的類),因爲我可能無法使用任何Java類來使用nailgun。
對於任何人:有一個在https://github.com/flatland/drip可能在有些情況下使用起來更實用,因爲它的概念非常簡單ifily(Nailgun重用了一個JVM,隨着時間的推移,它會變得越來越髒,而Drip一直在產生乾淨的新JVM) – ifischer