Почему nailgun кеширует аргументы командной строки?

При запуске Jython-программ через nailgun jython-программа всегда запускается с аргументами командной строки при первом запуске.

сначала я начинаю маникюр

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

затем, когда я запускаю простой скрипт jython:

import sys

print sys.argv

затем добавьте Jython в classpath

./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']

и всегда печатает "сначала" с тех пор:

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

1 ответ

Решение

Автор гвоздя здесь.

Nailgun не кеширует аргументы командной строки, но синглтоны и другие статические переменные сохраняются между вызовами.

Я не парень на питоне, но использование "sys.argv" для меня выглядит как синглтон. Я бы посоветовал изучить обработку аргументов командной строки в jython, чтобы понять, почему она не обновляется.

Если вы сделаете это, пожалуйста, напишите, что вы найдете... это может быть что-то в гвоздодере, но это не то, что я когда-либо видел за несколько лет использования.

Другие вопросы по тегам