2014-10-12 3 views
0

Я запускаю IntelliJ 13 (на OS X Yosemite) и пытаюсь получить работу Go IDEA plugin. Когда я отлаживал приложение, чтобы попытаться выяснить, в чем проблема, я обнаружил, что по какой-то причине запуск рабской ИДЕИ приводит к тому, что моя среда просто прекрасна.System.getenv() работает только при отладке плагина IntelliJ

Обычно, при попытке запустить что-либо с помощью утилиты go, генерируется исключение. Плагин будет выполнять команды, выполнив go <args> с окружающей средой вары:

Runtime rt = Runtime.getRuntime(); 
Process proc = rt.exec(command, goEnv, new File(projectDir)); 

Если изменить команду go быть полный путь go двоичном, все работает отлично. Однако при отладке мне не нужно менять путь, и он все еще преуспевает.

Плагин имеет action which prints out the environment который вызывает System.getenv()

GoToolWindow toolWindow = this.getGoToolWindow(project); 
toolWindow.showAndCreate(project); 
toolWindow.clearConsoleView(); 

String[] sysEnv = GoSdkUtil.convertEnvMapToArray(System.getenv()); 


toolWindow.printNormalMessage(String.format("%s -> %s%n", "Project dir", projectDir)); 
for (String env : sysEnv) { 
    toolWindow.printNormalMessage(String.format("%s%n", env)); 
} 

При запуске IDEA нормально, это выходы:

Project dir -> /Users/lander/Development/downloader 
SHELL=/bin/zsh 
TMPDIR=/var/folders/6y/xxqr1vqn6q7c_ttvdgjt7p1w0000gn/T/ 
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 
PATH=/usr/bin:/bin:/usr/sbin:/sbin 
XPC_FLAGS=0x0 
USER=lander 
HOME=/Users/lander 
XPC_SERVICE_NAME=com.jetbrains.intellij.43484 
LOGNAME=lander 
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.tV9zH4QXK4/Render 
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.BCyPknIo2V/Listeners 

И при отладке плагин:

Project dir -> /Users/lander/IdeaProjects/gotest 
ZSH=/Users/lander/.oh-my-zsh 
com.apple.java.jvmMode=client 
GREP_OPTIONS=--color=auto --exclude-dir=.cvs --exclude-dir=.git --exclude-dir=.hg --exclude-dir=.svn 
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0 
GOROOT=/usr/local/opt/go/libexec 
XPC_FLAGS=0x0 
JAVA_MAIN_CLASS_14389=com.intellij.idea.Main 
LOGNAME=lander 
GREP_COLOR=1;32 
ZSH_TMUX_TERM=screen 
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.BCyPknIo2V/Listeners 
OLDPWD=/Applications/IntelliJ IDEA 13.app/Contents/bin 
SHELL=/bin/zsh 
LC_CTYPE= 
TMPDIR=/var/folders/6y/xxqr1vqn6q7c_ttvdgjt7p1w0000gn/T/ 
PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/texbin:/Users/lander/go/bin 
VERSIONER_PYTHON_VERSION=2.7 
GOPATH=/Users/lander/go 
LESS=-R 
USER=lander 
com.apple.java.jvmTask=CommandLine_Manual.java 
ZSH_TMUX_AUTOSTARTED=true 
PAGER=less 
HOME=/Users/lander 
XPC_SERVICE_NAME=0 
Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.tV9zH4QXK4/Render 
LSCOLORS=Gxfxcxdxbxegedabagacad 
_ZSH_TMUX_FIXED_CONFIG=/Users/lander/.oh-my-zsh/plugins/tmux/tmux.extra.conf 
VERSIONER_PYTHON_PREFER_32_BIT=no 

В чем причина для разницы?

ответ

0

Согласно JetBrains employee, это происходит потому, что экземпляр подчиненного объекта запускается с средой, заданной внешним скриптом, который запущен. Плагины в родительском процессе не должны звонить System.getenv() и вместо этого использовать EnvironmentUtil.

Смежные вопросы