2

通过 nailgun 运行 Jython 程序时,jython 程序始终使用第一次运行时的命令行参数运行。

首先我开始钉枪:

arthur@a:~/nailgun$ java -jar nailgun.jar 
NGServer started on all interfaces, port 2113.

然后当我运行一个简单的 jython 脚本时:

import sys

print sys.argv

然后将 jython 添加到 nailguns 类路径

./ng ng-cp /usr/share/java/jython.jar 

然后运行带有单词“first”作为参数的脚本:

arthur@a:~/nailgun$ ./ng org.python.util.jython tmp.jy first
*sys-package-mgr*: can't create package cache dir, '/usr/share/java/jython.jar/cachedir/packages'
['tmp.jy', 'first']

以单词“second”作为参数再次运行它,它会打印“first”

arthur@a:~/nailgun$ ./ng org.python.util.jython tmp.jy second
['tmp.jy', 'first']

并且从那时起总是打印“first”:

arthur@a:~/nailgun$ ./ng org.python.util.jython tmp.jy third
['tmp.jy', 'first']
4

1 回答 1

4

钉枪作者在这里。

Nailgun 不会按设计缓存命令行参数,但单例和其他静态变量将在调用之间保留。

我不是 python 人,但“sys.argv”的用法在我看来确实像一个单身人士。我建议查看 jython 的命令行参数处理,看看为什么它没有得到更新。

如果你这样做,请发布你发现的东西......它可能是 nailgun 中的东西,但它不是我几年使用中见过的东西。

于 2011-06-15T19:55:49.963 回答