powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / set NLS_LANG
25 сообщений из 41, страница 1 из 2
set NLS_LANG
    #37876960
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Выполняю внешнюю программу (а именно sqlplus) из Java-приложения с помощью ant-овского класса Commandline.
Перед запуском необходимо установить переменную окружения Windows %NLS_LANG%. Не могу понять как это сделать.

До этого запускал getRuntime'ом -
Код: java
1.
"cmd.exe /c set NLS_LANG=" + getNLSLang() + " && sqlplus.exe параметры запуска"


работало.
Сейчас такое не прокатывает...
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877012
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Н
Код: java
1.
"cmd.exe /c set NLS_LANG=" + getNLSLang() + " && sqlplus.exe параметры запуска"

работало.
Сейчас такое не прокатывает...В строке, которую "видит" cmd должен быть один амперсанд.
Поэтому курите доку Commandline. Если, например, он сам себе цмд, то строка должна измениться до "... ^& ...".

P.S. Вам точно нужен nls_lang?
Вы уверены, что "alter session set nls_date_format/nls_timestamp_format = 'чего надо';" внутри скрипта не сможет решить вашу проблему?
Ну а сами скрипты? Они настолько sqlplus-specific, что их нельзя скормить средствами jdbc через штатный ojdbc.jar?

P.P.S. А в чём вообще проблема установить правильный nls_lang перед ява-приложения???
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877036
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovВы уверены, что "alter session set nls_date_format/nls_timestamp_format = 'чего надо';" внутри скрипта не сможет решить вашу проблему?
Да, на 100%, не то

Basil A. SidorovНу а сами скрипты? Они настолько sqlplus-specific, что их нельзя скормить средствами jdbc через штатный ojdbc.jar?

Да, жестко завязаны

Basil A. SidorovP.P.S. А в чём вообще проблема установить правильный nls_lang перед ява-приложения???

Это было бы отличным решением, но этот код является часть самодельного ant-плагина, который в свою очередь вызывается из ant-сценария, а сам сценарий дергается из Windows-планировщика вот таким образом:

Код: java
1.
"C:\Program Files\Java\jre6\bin\java.exe"  -Xmx256m -cp "D:\Ant\lib\ant-launcher.jar" "-Dant.home=D:\Ant" org.apache.tools.ant.launch.Launcher -f "D:\ant_script.xml"
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877147
Adva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Максим Н,

почему бы из планировщика не запустить bat файл, в котором будут прописаны все переменные откуда уже будет запускаться java ?
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877151
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим На сам сценарий дергается из Windows-планировщика вот таким образом:
Код: java
1.
"C:\Program Files\Java\jre6\bin\java.exe"  -Xmx256m -cp "D:\Ant\lib\ant-launcher.jar" "-Dant.home=D:\Ant" org.apache.tools.ant.launch.Launcher -f "D:\ant_script.xml"

Я могу сказать, что из штатного планировщика одинаково хорошо дёргается и cmd, содержащий:
Код: sql
1.
2.
3.
4.
5.
@echo off
setlocal
set NLS_LANG=чего.надо
...
endlocal

и комстрока вида:
Код: sql
1.
cmd /cset NLS_LANG=чего.надо&...
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877360
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AdvaМаксим Н,

почему бы из планировщика не запустить bat файл, в котором будут прописаны все переменные откуда уже будет запускаться java ?
Идея отличная, но запускаются задания от специального пользователя ОС, а для запуска батников необходимо выдать права этому пользователю на командный процессор cmd.exe (лежащий где то в %windir%), что делать в данном случае крайне не желательно
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877363
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov,
Та же ситуация, что описал в предыдущем посте - cmd не доступен для этого пользователя.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877458
Adva
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще есть варианты:

1. Написать SET NLS_LANG=... && java -Xmx...
2. Написать java -DNLS_LANG=.. -Xmx...
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877581
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НAdvaМаксим Н,

почему бы из планировщика не запустить bat файл, в котором будут прописаны все переменные откуда уже будет запускаться java ?
Идея отличная, но запускаются задания от специального пользователя ОС, а для запуска батников необходимо выдать права этому пользователю на командный процессор cmd.exe (лежащий где то в %windir%), что делать в данном случае крайне не желательно
И типа скопировать его в доступную папку вера не позволяет?
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877596
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GarrickМаксим Нпропущено...

Идея отличная, но запускаются задания от специального пользователя ОС, а для запуска батников необходимо выдать права этому пользователю на командный процессор cmd.exe (лежащий где то в %windir%), что делать в данном случае крайне не желательно
И типа скопировать его в доступную папку вера не позволяет?
Позволяет, просто хотел найти более гибкий способ указать переменную
...
Рейтинг: 0 / 0
set NLS_LANG
    #37877780
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо, разобрался с Ant'овским Commandline:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
        ...
        Commandline c = (Commandline) cmdl.clone();
        c.setExecutable("cmd.exe");
        c.createArgument().setValue("/c");
        c.createArgument().setValue("set NLS_LANG=RUSSIAN_RUSSIA.CL8MSWIN1251");
        c.createArgument().setValue("&");
        c.createArgument().setValue("sqlplus");
        c.createArgument().setValue("user@db/pwd");
        c.createArgument().setValue("@I:\\sql\\select_NLS\\test.sql");
        ...
...
Рейтинг: 0 / 0
set NLS_LANG
    #37878597
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Нcmd не доступен для этого пользователя.Установите переменные среды для конкретного пользователя.
Как записать переменную в раздел Environment нужного пользователя - разберётесь?
...
Рейтинг: 0 / 0
set NLS_LANG
    #37878604
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НВсем спасибо, разобрался с Ant'овским Commandline:
Код: java
1.
        c.setExecutable("cmd.exe");

Обманывать - нехорошо.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37879579
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМаксим НВсем спасибо, разобрался с Ant'овским Commandline:
Код: java
1.
        c.setExecutable("cmd.exe");

Обманывать - нехорошо.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37879580
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НBasil A. Sidorovпропущено...
Обманывать - нехорошо.
Почему вы так решили?
У меня работает, могу код целиком показать.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37879581
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НПочему вы так решили?Потому, что чуть выше вы утверждали, что специальный пользователь прав на cmd.exe не имеет.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37879782
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМаксим НПочему вы так решили?Потому, что чуть выше вы утверждали, что специальный пользователь прав на cmd.exe не имеет.
Так и есть, это я для пример такой код выложил, путь к командному процессору передается во входном параметре, и при запуске из планировщика код выглядет примерно так:
Код: java
1.
c.setExecutable("D:\utils\cmd.exe");


Соответсвенно права на эту папку у пользователя есть.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37879936
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Н
Код: java
1.
c.setExecutable("D:\utils\cmd.exe");

Соответсвенно права на эту папку у пользователя есть.Читал я в детстве журнал "Техника-молодёжи" и была там (однажды) рубрика "Зачем просто, когда можно сложно?". Всё в картинках. Прикольно и понятно.
А вот ваших хитровывернутых конструкций - не понимаю.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37879991
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovА вот ваших хитровывернутых конструкций - не понимаю.да
...
Рейтинг: 0 / 0
set NLS_LANG
    #37880041
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. Sidorov, grasoff.net
Извиняюсь, что ввел в заблуждение.
Во первых, конечно же не
Код: java
1.
c.setExecutable("D:\utils\cmd.exe");


а
Код: java
1.
2.
3.
...
c.setExecutable("D:\\utils\\cmd.exe");
...



Этим я хотел сказать, что имеется копия стандартного виндового командного процессора, взятого напрямую из папки system (если не ошибаюсь) и положенная в специальную папку, на файлы которой есть права у пользователя. Соответсвенного с помощью именно этого командного процессора и устанавливается переменная окружения, а затем через символ && запускается sqlplus.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37881205
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НЭтим я хотел сказать, что имеется копия стандартного виндового командного процессораОстрый всплеск толстого английского юмора?
Если у вас (пофигу где) имеется cmd.exe, то накойхер (фамилие такое) вы мутите мутотень в анте, вместо того, чтобы дать системному администратору выполнить его (сисадмина) прямые обязанности???
...
Рейтинг: 0 / 0
set NLS_LANG
    #37881377
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМаксим НЭтим я хотел сказать, что имеется копия стандартного виндового командного процессораОстрый всплеск толстого английского юмора?
Если у вас (пофигу где) имеется cmd.exe, то накойхер (фамилие такое) вы мутите мутотень в анте, вместо того, чтобы дать системному администратору выполнить его (сисадмина) прямые обязанности???да! )
...
Рейтинг: 0 / 0
set NLS_LANG
    #37881398
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМаксим НЭтим я хотел сказать, что имеется копия стандартного виндового командного процессораОстрый всплеск толстого английского юмора?
Если у вас (пофигу где) имеется cmd.exe, то накойхер (фамилие такое) вы мутите мутотень в анте, вместо того, чтобы дать системному администратору выполнить его (сисадмина) прямые обязанности???
Админ админу рознь, особенно когда их несколько десятков, поэтому генерируется сценарий и по расписанию выполняется, причем сценарий может быть довольно сложным (помимо sql-скриптов хватает еще файловых операций, логирования и т.д.) и критичным к времени выполнения.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37881655
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Нпричем сценарий может быть довольно сложныма ант зачем? powershell не хватает?
...
Рейтинг: 0 / 0
set NLS_LANG
    #37882115
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netМаксим Нпричем сценарий может быть довольно сложныма ант зачем? powershell не хватает?
понятные xml-сценарии,
расширяемость плагинами,
логирование
и еще много чего интересного
...
Рейтинг: 0 / 0
25 сообщений из 41, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / set NLS_LANG
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]