KronicDeth / intellij-elixir

Elixir plugin for JetBrain's IntelliJ Platform (including Rubymine)
Other
1.8k stars 152 forks source link

Elixir SDK is probably corrupt for asdf on Ubuntu/Elementary OS/Debian/Depin #1389

Closed drl123 closed 3 years ago

drl123 commented 5 years ago

Similar to #1284 but not quite. I was installing on a fresh Ubuntu (Elementary OS) box today and using the latest Rubymine (2018.3) and Elixir plugin. I installed Erlang and Elixir via asdf and verified both work from the command line. However in Rubymine, I can set the Erlang SDK, but the Elixir SDK always complains that the SDK may be corrupt. I tried both the 1.8.1 and 1.8.1-otp-21 variants with no luck.

@KronicDeth Any suggestions? My new machine is pretty useless as is. I really don't want to have to ditch asdf just to get the IDE to work. Hoping there's a work-around. :-)

PS...went to my OSX machine that is running the same versions and installed 1.8.1-otp-21 there and I can select the SDK's fine...but I had previously installed 1.7.3-otp-21 some time ago (~early Dec).

KronicDeth commented 5 years ago

@drl123 are you saying asdf on Elementary OS is behaving differently than macOS?

drl123 commented 5 years ago

So I can confirm that a complete clean install on OSX works. I set up my old iMac that I had wiped clean today and it all worked. Going back to my Elementary VirtualBox VM, I removed the elixir plugin and reinstalled it, then tried both 1.8.1-otp-21 and 1.7.3 (with no otp specification) and neither worked.

Here's what I see in the Elemental SDK window. In the OSX one, I see the class paths for Erlang here too, but not in Elemental/Ubuntu. I tried to add the Classpaths from the Erlang install manually (like it is in OSX), but that didn't work either. FYI - this is effectively Ubuntu 18.04.

I'll try setting up an pure Ubuntu machine tonight and see if that's any better...I'll also try removing and reinstalling both Erlang and Elixir from asdf entirely and starting over. Maybe something is wrong in the Erlang install even though it's complaining about the Elixir SDK?? (but everything works on command line...iex, observer and all)

screen shot 2019-01-31 at 7 28 48 am

drl123 commented 5 years ago

OK, so I tried uninstalling the asdf plugins, reinstalling and reinstalling Erlang and Elixir...same result. Install Ubuntu 18.04 LTS, asdf, asdf-elixir, asdf-erlang...same result. Installed Intellij CE and when I tried to add the Elixir SDK, got the same message, so at least we know it isn't isolated to the small IDE's and seems to be related to 18.04.

screen shot 2019-02-01 at 10 22 51 am

theevangelista commented 5 years ago

I also used asdf on Deepin (Debian) to install only Elixir, Erlang was installed using .deb. The plug-in complains about the installation being corrupted and can't find the sdk version, as related

OmanF commented 5 years ago

Can confirm, this is happening as of 12.04.2019.

OS: Antergos Linux (Arch derivative). Plugin version: 10.4.0 Erlang version (via asdf): 21.3.3. (was detected correctly by plugin!) Elixir version (via asdf): 1.8.1 (both vanilla 1.8.1 and 1.8.1-otp-21)

Tried all solution suggested on #308, #341, #1278 for no avail.

With regards to the title, seeing all the different variants reporting the issue (even macOS) I'm guessing this is not distro-related?

m13m commented 4 years ago

I am getting the same issue on Goland

OS: Fedora 29 IDE: Goland 2019

Screenshot from 2019-07-31 02-52-55 - 1

Screenshot from 2019-07-31 02-53-13

eltonplima commented 4 years ago

I am getting the same problem with PyCharm 2019.2 on Ubuntu 19.04

Screenshot from 2019-08-08 06-04-41

MrLalatg commented 4 years ago

Same error on Windows IntelliJ IDEA. image

douglascorrea commented 4 years ago

From the log file in a Windows machine I found this:

    at com.intellij.execution.process.CapturingProcessHandler.<init>(CapturingProcessHandler.java:28)
    at org.elixir_lang.sdk.ProcessOutput.execute(ProcessOutput.java:95)
    at org.elixir_lang.sdk.ProcessOutput.getProcessOutput(ProcessOutput.java:85)
    at org.elixir_lang.sdk.ProcessOutput.transformStdoutLine(ProcessOutput.java:61)
    at org.elixir_lang.sdk.elixir.Type.detectSdkVersion(Type.java:470)
    at org.elixir_lang.sdk.elixir.Type.suggestSdkName(Type.java:645)

Looking at: at org.elixir_lang.sdk.ProcessOutput.execute(ProcessOutput.java:95)

I found a related issue on Erlang IntelliJ repo: https://github.com/ignatov/intellij-erlang/commit/9b82c755379257b19adfae14be3318526db5574c#diff-243752be36487fb2e05f62169eb9df39R65

Maybe this could be something to pursue.

I'm not very familiar with Jetbrains plugin development to go deeper into the problem

drl123 commented 4 years ago

@KronicDeth I noticed that v11.2.0 has a fix for asdf paths. Upgraded to 11.2.0 using RM 2019.2.3 on Elemental and same issue. Setting the Erlang version appears to work (class list populates in sidebar), however I can't set the Elixir SDK. Seems to work fine on OSX.

PS...tried removing and reinstalling latest RM as well since it did several updates to get to 2019.2.3, but same result.

MattGo commented 4 years ago

Hey folks. I've been struggling with this problem too. I'm using Idea 2019 on OSX Catalina.

Turns out that when Erlang and Elixir are set with a global version like this in my case scenario:

asdf global erlang 21.3.7
asdf global elixir 1.8.1

Well... it works. As you can see, Elixir SDK has been well detected.

Capture d’écran 2019-12-12 à 11 31 20

I know this is not very handy as we may have several Elixir projects with different Elixir / Erlang versions defined in .tool-versions. But this will do the trick for me as I usually work on one project at a time.

Hope this helps :relaxed:

jonthulu commented 4 years ago

For people still having this problem when using asdf, I found this guy's solution fixed it for me: Problems with Elixir not being found when installed through asdf #66

In short, you must add . $HOME/.asdf/asdf.sh to your .profile in order for programs (and not just your terminal) to be able to access elixir.

echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.profile
johannesE commented 3 years ago

That did not fix the issue for me. Running

Tried echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.profile, echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc, setting both elixir and erlang globally and restarting webstorm. Still getting the "Unknown elixir version at /home/..."

image

EDIT: I had to reboot my machine. And voila, it works.

guruarumugam commented 3 years ago

Nope the following did not solve the problem

FYI: I am on deepin linux, use zsh and intellij 2020.2

image

daya commented 3 years ago

Having the exact same problem .... not sure if this is a plugin issue or Intellij, but this needs to be resolved before this plugin can be useful

bklebe commented 3 years ago

I had this issue in IntelliJ IDEA Ultimate 2020.3 on macOS 11.1, and I fixed it by adding the asdf script to .profile and setting both the Elixir and Erlang versions globally. .profile is read for all login shells, which ensures IntelliJ will pick it up even if you use zsh.

daya commented 3 years ago

@bklebe would you mind sharing the .profile bits and or env vars that fixed this problem for you? thanks

bklebe commented 3 years ago

It was just the typical asdf script load, . $HOME/.asdf/asdf.sh. After that I set asdf global erlang 23.2.3 and asdf global elixir v1.11.3-otp-23, and restarted IntelliJ, and it no longer seemed to complain about corruption. I'm not sure whether one or the other would work, but I know that Elixir has a dependency on Erlang when loading it via asdf, so my guess is that the plugin was trying to run the Elixir version in the install directory with Erlang in some way and not finding an Erlang runtime.