powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / set NLS_LANG
41 сообщений из 41, показаны все 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
set NLS_LANG
    #37882159
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НАдмин админу рознь, особенно когда их несколько десятков, поэтому генерируется сценарийЕсли уровень админов настолько ниже плинтуса, что что мешает вам сгенерить cmd , в котором будет настроено и запущено всё, что нужно?
...
Рейтинг: 0 / 0
set NLS_LANG
    #37882968
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМаксим НАдмин админу рознь, особенно когда их несколько десятков, поэтому генерируется сценарийЕсли уровень админов настолько ниже плинтуса, что что мешает вам сгенерить cmd , в котором будет настроено и запущено всё, что нужно?
По причинам, описанным в предыдущем посте. Так же не забываем про кроссплатформенность. Так же генерировать в базе xml гораздо проще (приятнее, быстрее), чем текст для командной строки.

ПС зачем вообще тогда существует ant, если можно все сделать в bat-нике...?
...
Рейтинг: 0 / 0
set NLS_LANG
    #37884373
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НПС зачем вообще тогда существует ant, если можно все сделать в bat-нике...?Затем, что существуют программисты и (даже) админы, которые не умеют готовить скрипты.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37884554
Фотография grasoff.net
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НТак же не забываем про кроссплатформенностьдак python
...
Рейтинг: 0 / 0
set NLS_LANG
    #37885873
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ставить в строку запуска cmd.exe и рассуждать о кросплатформенности - это пять.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37887683
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovСтавить в строку запуска cmd.exe и рассуждать о кросплатформенности - это пять.
Командный процессор передается в качестве параметра, жестко не зашит.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37887714
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grasoff.netМаксим НТак же не забываем про кроссплатформенностьдак python
Можно поподробнее.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37887980
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НКомандный процессор передается в качестве параметра, жестко не зашит.То, что cmd.exe/(c)sh/bash и прочие облочки - просто разные, вас не смущает?
...
Рейтинг: 0 / 0
set NLS_LANG
    #37887981
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НМожно поподробнее.rexx - проще синтаксисом :)
...
Рейтинг: 0 / 0
set NLS_LANG
    #37888051
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМаксим НКомандный процессор передается в качестве параметра, жестко не зашит.То, что cmd.exe/(c)sh/bash и прочие облочки - просто разные, вас не смущает?
Пока нет, под каждую оболочку свои команды, благо в сценарии их используется минимуму.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37888386
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НПока нет, под каждую оболочку свои команды, благо в сценарии их используется минимуму.К минимуму или к максимуму - неважно. Важно, что вы должны написать разные сценарии под разные платформы.
Задайтесь простым вопросом - накойхер (фамилие такой) админу ant и вы поймёте, что у шелл-скриптов есть и область применения и преимущества.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37888545
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovК минимуму или к максимуму - неважно. Важно, что вы должны написать разные сценарии под разные платформы.
Сценарий одинаковый, праметры командной строки берутся из заранее настроенного конфигурационного файла для каждой платформы (разновидностей коих в моем случае не так много).

Приведу пример (сразу оговорюсь, сферический), который одинаково хорошо будет работать на всех платформах, без единой правки: не нужно заморачиваться с операциями над файлами, таскать с собой архиватор и т.д. И самое главное все прозрачно и понятно, аналогичный скрипт (даже такой простой) на cmd/bash будет выглядеть гораздо страшнее:

Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   <target name="test">
      <trycatch>
         <try>
            <copy file="build.xml" tofile="build.xml.bac" />
            <attrib file="build.xml.bac" readonly="false" />
            <zip destfile="test.zip">
               <fileset dir="." includes="build.xml.bac"/>
            </zip>
         </try>
         <catch>
            <echo>ERROR!</echo>
         </catch>
      </trycatch>
   </target>
...
Рейтинг: 0 / 0
set NLS_LANG
    #37888736
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Нсамое главное все прозрачно и понятно, аналогичный скрипт (даже такой простой) на cmd/bash будет выглядеть гораздо страшнее:
вам уже сказали - это для вас понятнее.
Позовите толкового админа и спросите.
Для него сабж выше это родной ЯП и инструмент.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37889543
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим Наналогичный скрипт (даже такой простой) на cmd/bash будет выглядеть гораздо страшнее:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   <target name="test">
      <trycatch>
         <try>
            <copy file="build.xml" tofile="build.xml.bac" />
            <attrib file="build.xml.bac" readonly="false" />
            <zip destfile="test.zip">
               <fileset dir="." includes="build.xml.bac"/>
            </zip>
         </try>
         <catch>
            <echo>ERROR!</echo>
         </catch>
      </trycatch>
   </target>

Код: sql
1.
2.
3.
4.
5.
6.
@echo off
setlocal
pushd "Куда Надо"
(xcopy /r/o build.xml build.xml.bac&&attrib -r build.xml.bac&&zip -9u test build.xml.bac)||echo ERROR!
popd
endlocal

Где ужасы?

P.S. "Архиватор не надо таскать" - тоже мне, плюс. У меня комплект из четырёх присутствует и ничего - не задавило.
...
Рейтинг: 0 / 0
set NLS_LANG
    #37889743
Максим Н
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Basil A. SidorovМаксим Наналогичный скрипт (даже такой простой) на cmd/bash будет выглядеть гораздо страшнее:
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
   <target name="test">
      <trycatch>
         <try>
            <copy file="build.xml" tofile="build.xml.bac" />
            <attrib file="build.xml.bac" readonly="false" />
            <zip destfile="test.zip">
               <fileset dir="." includes="build.xml.bac"/>
            </zip>
         </try>
         <catch>
            <echo>ERROR!</echo>
         </catch>
      </trycatch>
   </target>

Код: sql
1.
2.
3.
4.
5.
6.
@echo off
setlocal
pushd "Куда Надо"
(xcopy /r/o build.xml build.xml.bac&&attrib -r build.xml.bac&&zip -9u test build.xml.bac)||echo ERROR!
popd
endlocal

Где ужасы?

P.S. "Архиватор не надо таскать" - тоже мне, плюс. У меня комплект из четырёх присутствует и ничего - не задавило.

Думаю дальнейший спор бесполезен. Я с вами согласен (и про админов и про командную строку), но в конкретном случае больше устраивает Ant. И спасибо за красивый скрипт :)
...
Рейтинг: 0 / 0
set NLS_LANG
    #37890819
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим НИ спасибо за красивый скрипт :)Только проверьте на ожидаемость поведения при ошибках :)
Плюс - у cmd.exe есть вещи, которые по разному работают в командной строке и в скриптах. "Удвоение процентов" - самая малость.
...
Рейтинг: 0 / 0
41 сообщений из 41, показаны все 2 страниц
Форумы / Java [игнор отключен] [закрыт для гостей] / set NLS_LANG
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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