2013-05-28 4 views
1

Я создаю роль Azure PaaS, которая устанавливает переменную PATH для java.exe. У меня есть фоновая задача, которая делает это.Java PATH не задан при создании роли Azure Paas

startupApp.cmd выглядит

setx PATH %PATH%;%CD%\jdk\bin\ /m 
    cscript /NoLogo util\unzip.vbs jdk.zip "%CD%" 

Call the bat file to start my application. 

Когда виртуальная машина начинает я вижу, что переменная PATH среда правильно установлен и указывает на папку где JDK \ Bin. Однако мое приложение не запускается с ошибкой «java не распознается как внутренняя или внешняя командная команда».

JAVA команда, чтобы начать мое приложение является

java %JAVA_OPTS% %LOG_OPTS% %LOG4J_OPTS% -cp my_app.jar %MAIN_CLASS% 

Вот запутанный путь,

  1. После того как я войти в виртуальную машину и откройте окно командной строки и введите Java с я вижу, что он работает хорошо.
  2. Если я перезапущу виртуальную машину, команда java для запуска моего приложения работает нормально, и я и мое приложение тоже начинают нормально работать.

ответ

3

Существует значительная разница между Setx и заданной функции:

  • набор вступает в силу в местного CMD контекста. Когда вы выйдете или закроете окно cmd, вы потеряете переменную окружения.

  • Setx вступает в силу в будущего CMD контекста. Таким образом, вы не увидите переменную окружения и ее значение в текущем cmd. Чтобы увидеть его, вам нужно открыть новое окно cmd.

Если вы хотите использовать его глобальные и немедленным вы должны использовать обе функции бок о бок.

Описание взято с: http://batcheero.blogspot.de/2008/02/set-and-setx.html

+0

+1 Спасибо большое за указание на это. Работала хорошо для меня. На самом деле мне действительно не нужно использовать setx, так как мне просто нужна переменная PATH, установленная в локальном контексте. – pup784