我正在开发一个经常启动的 Groovy shell 脚本(执行相当小的任务),因此我需要一个快速的 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
我有一个名为 hello.groovy 的简单虚拟 Groovy 脚本,只是为了测试 nailgun-server:
#!/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 脚本的正确方法是什么?我也很欣赏一些关于如何使用 Nailgun 的好网站/教程,真的很难获得如何使用它的任何信息......
编辑:
我还希望有一个完整的示例(包括如何使用 ng 调用特定类)将 nailgun 与纯 Java 类一起使用,因为我也无法让 ng 与任何 Java 类一起使用。