首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Nailgun Server启动Groovy脚本(或Java类)

如何使用Nailgun Server启动Groovy脚本(或Java类)
EN

Stack Overflow用户
提问于 2011-07-20 11:18:56
回答 3查看 1.8K关注 0票数 3

我正在开发一个Groovy脚本,它经常被启动(执行相当小的任务),因此我需要一个快速的JVM启动时间。为了达到这个目的,我尝试用钉枪启动它。

我已经安装了Nailgun作为Ubuntu包。然后,我通过将论证错误链接到/usr/bin/ng-server/usr/bin/ng来修复/usr/bin/ng。我要像这样启动Nailgun:

代码语言:javascript
复制
java -cp /usr/share/java/nailgun-0.7.1.jar -server com.martiansoftware.nailgun.NGServer

我有一个名为hello.groovy的简单虚拟Groovy脚本,只用于测试钉枪服务器:

代码语言:javascript
复制
#!/usr/bin/env groovy
def sayHello() {
  println("Hello Groovy!");
}

sayHello();

我用groovyc将文件编译成hello.class。

现在我想在Nailgun服务器上启动这个脚本。我这么做的天真方法是:

代码语言:javascript
复制
ng hello
ng hello.sayHello

但我得到的只有ClassNotFoundExceptions:

代码语言:javascript
复制
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 Server启动我的Groovy脚本的正确方法是什么?我也很感激一些关于如何使用Nailgun的好网站/教程,很难获得如何使用它的任何信息。

编辑:

我还想要一个完整的示例(包括如何用ng调用特定的类),以便在纯Java类中使用钉枪,因为我也无法使用任何Java类。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-07-21 14:27:57

终于明白了。我只是不明白我必须首先向Nailgun类路径添加所有需要的类(这个问题给了我最后的提示)。

首先,将Groovy添加到类路径中:

代码语言:javascript
复制
ng ng-cp /usr/share/java/groovy-all.jar

然后将包含Groovy脚本/Java类的目录添加到类路径中,在我的示例中是:

代码语言:javascript
复制
ng ng-cp /home/$USER/tools/groovy

现在,我可以像这样使用Nailgun运行Groovy脚本了:

代码语言:javascript
复制
ng hello
票数 5
EN

Stack Overflow用户

发布于 2011-07-20 14:49:00

我认为jruby.org最近提到了这件丢失已久的武器(甲骨文总有一天会接手,因为缓慢的冷启动对大多数新鸟类来说是致命的弱点)。

你把你的剧本写进课堂了吗?

然后在类路径上使用groovy的“ng.hello”

我的盲目猜测(在使用rvm维护jRuby之后,懒得重新安装栏杆)

票数 0
EN

Stack Overflow用户

发布于 2011-07-22 10:20:21

如果运行的hello是hello.groovy (解释的)而不是编译下来的hello.class,我会感到惊讶。

不是一个可持续的解决方案,他们应该有一个用于热启动客户端JVM的JSR。

这样,客户机模式下的JVM就会进入后台守护进程,等待生成一个java进程,并清除所有性能不佳的虚幻

当然,为了安全起见,生产将始终使用整个热点。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6761054

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档