Добавьте полный путь к файлу jar в CLASSPATH. В linux используйте: export CLASSPATH=".:/full/path/to/file.jar:$CLASSPATH"
. Другой способ работы (без редактирования CLASSPATH) разворачивал банку в текущей папке проекта.
Для меня не работали:
1) Используя опцию -cp
с полным путь к файлу jar.
2) Используя -cp
только с именем jar, если он находится в текущей папке
3) Копирование флага в текущую папку проекта
4) Копирование банки в стандартное расположение java-банок (/ usr / share / java)
Это решение сообщается для класса com.mysql.jdbc.Driver в mysql-коннекторе -java.5 - *. jar, работающий на Linux с OpenJDK версии 1.7
Ввод, как изначально приведенный, не совсем корректен JSON, и неясно, каков желаемый результат, но может представлять интерес следующее. Он написан для текущей версии jq (версия 1.5), но может быть легко адаптирован для jq 1.4:
def json2qjson:
def pp: if type == "string" then "\"\(.)\"" else . end;
. as $in
| foreach keys[] as $k (null; null; "\"\($k)\": \($in[$k] | pp)" ) ;
def data: {
"@timestamp": "2015-09-22T10:54:35.449+02:00",
"@version": 1,
"HOSTNAME": "server1.example",
"level": "WARN",
"level_value": 30000,
"logger_name": "server1.example.adapter",
"message": "message",
"stack_trace": "ERROR LALALLA\nERROR INFO NANANAN\nSOME MORE ERROR INFO\nBABABABABABBA BABABABA ABABBABAA BABABABAB\n"
};
data | json2qjson
Выход:
$ jq -rnf json2qjson.jq
"@timestamp": "2015-09-22T10:54:35.449+02:00"
"@version": 1
"HOSTNAME": "server1.example"
"level": "WARN"
"level_value": 30000
"logger_name": "server1.example.adapter"
"message": "message"
"stack_trace": "ERROR LALALLA
ERROR INFO NANANAN
SOME MORE ERROR INFO
BABABABABABBA BABABABA ABABBABAA BABABABAB
"
Конечно! Используя опцию -r
, jq будет печатать содержимое строки непосредственно на терминале, а не как строки, экранированные JSON.
jq -r '.stack_trace'
-r
. Вы можете сделать какое-то странное преобразование строки для объекта, но вы, вероятно, не хотите этого делать. Какова цель этого преобразования? Похоже, что это вряд ли будет правильным подходом к любой проблеме, которую вы решаете.
– Noemi Lapresta
30 September 2015 в 10:24
Если вы не ограничиваете использование jq
только , вы можете «исправить» (или фактически «un-json-ify») выход jq
с помощью sed
:
cat the-input | jq . | sed 's/\\n/\n/g'
Если у вас также есть вкладки на входе (\t
в JSON), тогда:
cat the-input | jq . | sed 's/\\n/\n/g; s/\\t/\t/g'
Это было бы особенно удобно, если был создан ваш stack_trace
по Java (вы не указали, что является источником журналов), так как строки стека Java начинаются с <tab>at<space>
.
Предупреждение: естественно, это не правильно , в некотором смысле, что вход JSON, содержащий \\n
, приведет к «выходу», однако он должен привести к выводу «n». Хотя это и не правильно, это, безусловно, достаточно, чтобы заглянуть в данные людей. Шаблоны sed
могут быть дополнительно улучшены, чтобы позаботиться об этом (за счет удобства чтения).
sed
вместо этого (см. Мой ответ для деталей). – Piotr Findeisen 26 March 2016 в 01:52