itemis / xtext-languageserver-example

An Example for an Xtext Language Server
Eclipse Public License 1.0
54 stars 26 forks source link

"Project and External Dependencies" disappeared in eclipse IDE #79

Closed RobertWalterU3d closed 2 years ago

RobertWalterU3d commented 2 years ago

I used this template in 2020 to build my own VS Code extension.

Everything worked back then, but when I open the workspace with the very same eclipse version again today (2020-06), the library "Project and External Dependencies" does not show and all the dependencies to Xtext and related libs are broken.

Building from gradle still works, and I assume the issue is related to how buildship sets up the classpath, but I tried to refresh the gradle project and get this "Library entry" back so I can use the eclipse IDE to browse my projects again, but I cannot make it work. Any ideas how I can fix that?

UPDATE

In case you experience the same issue, try this solution of setting up a new workspace and importing the root gradle project, it worked for me: https://github.com/itemis/xtext-languageserver-example/issues/79#issuecomment-1008874954

cdietrich commented 2 years ago

please check the gradle log / console on refresh gradle project

RobertWalterU3d commented 2 years ago

sorry, but where I can I find the gradle log/console? ALl I see are these two views in the IDE (which is where I do "RIght click->Gradle->Refresh Gradle Project"):

image

cdietrich commented 2 years ago

in the console view on the arrow i see gradle operations when calling gradle refresh on parent/root

Bildschirmfoto 2022-01-10 um 12 55 52
RobertWalterU3d commented 2 years ago

I don't see that option, but it looks like the [Gradle Operations] are already "open" image

When I perform the refresh, the console shows nothing.

cdietrich commented 2 years ago

there is no gradle -> refresh gradle project. ?!?

RobertWalterU3d commented 2 years ago

The menu option is there, but the console does not show anything when I perform the action.

RobertWalterU3d commented 2 years ago

gradleConsole

cdietrich commented 2 years ago

is there anything in error log? have no idea whatn is broken with your buildship install. how do your .classpath files look like

RobertWalterU3d commented 2 years ago

This is how the classpath file looks like for the language project:

<?xml version="1.0" encoding="UTF-8"?>
<classpath>
    <classpathentry kind="src" output="bin/main" path="src">
        <attributes>
            <attribute name="gradle_scope" value="main"/>
            <attribute name="gradle_used_by_scope" value="main,test"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="bin/main" path="src-gen">
        <attributes>
            <attribute name="gradle_scope" value="main"/>
            <attribute name="gradle_used_by_scope" value="main,test"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="src" output="bin/main" path="xtend-gen">
        <attributes>
            <attribute name="gradle_scope" value="main"/>
            <attribute name="gradle_used_by_scope" value="main,test"/>
        </attributes>
    </classpathentry>
    <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.8/"/>
    <classpathentry kind="con" path="org.eclipse.buildship.core.gradleclasspathcontainer"/>
    <classpathentry kind="output" path="bin/default"/>
</classpath>

Again, nothing that would normally be in the "Project and External Dependencies" can be resolved, so my Problems view looks like below (but I guess you mean something else with "error log", right?)

image

cdietrich commented 2 years ago

i mean .log files in workspace/.metadata

yes and normally gradle logs that in the operations log if it cannot resolve stuff. maybe its also a java version

which ones do you use?

RobertWalterU3d commented 2 years ago

When I run gradle from console to refresh dependencies, it works (I use the build task as target, maybe that is not correct?)

image

cdietrich commented 2 years ago

yes but buildship should do the same.

RobertWalterU3d commented 2 years ago

so, this is what I see at the end of the log file:

image

cdietrich commented 2 years ago

so it looks like there is something wrong with your setup.

RobertWalterU3d commented 2 years ago

Maybe unsurprisingly, still wanted to share, this folder is empty:

.\.metadata\.plugins\org.eclipse.buildship.core\project-preferences\

I understand that buildship should store something there.

I will check the versions of gradle, buildship, etc, next, as you suggested.

cdietrich commented 2 years ago

are you sure the eclipse workspace and the gradle root or a project root are disjoint?

RobertWalterU3d commented 2 years ago

eclipse version is: 2020-06 buildship version (acc. to eclipse->Help->About): 3.1.4.v20200326-1743 gradle (acc to command ./gradlew -v): 5.6.4

Are you sure the eclipse workspace and the gradle root or a project root are disjoint?

How can I ensure that? Again, building from command line and starting VS code with the plugin works just fine...

The interesting thing is that I used the very same eclipse, gradle, buildship version in 2020 to develop this language extension... so I wonder how it could have worked back then but not today...

cdietrich commented 2 years ago

what is the dir of your eclipse workspace

RobertWalterU3d commented 2 years ago

I use the exact same folder structure as this example repository does, so I have a a root folder where my language/ide/websocket/vscode-extension projects are all located in separate folder.

The settings.gradle file includes these five projects.

kuniss commented 2 years ago

In the meantime jcenter went down. Maybe, this is the reason? That's where the dependencies are resolved from...

cdietrich commented 2 years ago

again which is the workspace dir you use in eclipse?

kuniss commented 2 years ago

... use mavenCentral() instead.

RobertWalterU3d commented 2 years ago

It is the "root":

D:\dev\repository\root\

Inside this root folder, there are the five projects, and gradlew.bat, .metadata, .settings and such.

cdietrich commented 2 years ago

then this is something that buildship dislikes. can you try different dir.

RobertWalterU3d commented 2 years ago

Sure. So, should I create a completely different directory as the workspace and import my five projects? As copies, or just references?

cdietrich commented 2 years ago

just new workspace and use gradle import on the root

RobertWalterU3d commented 2 years ago

... use mavenCentral() instead

Sorry, I'm not used to gradle, maven, or eclipse, I just try to used this as a template, so I don't know how I would go about using maven central instead. It also looks like as if all the dependencies are cached in ~\.gradle\caches\modules-2\ ... so I think it is not an issue of resolving the dependencies from server...?

RobertWalterU3d commented 2 years ago

just new workspace and use gradle import on the root

I'm sorry, I don't follow. When I create a new workspace, it is empty, right? So, I'm not sure

I'm reall ynot familiar with any of these technologies, sorry.

cdietrich commented 2 years ago

create new workspace (empty) import -> gradle -> existing gradle project choose the root

RobertWalterU3d commented 2 years ago

Wow, that did indeed fix it!

RobertWalterU3d commented 2 years ago

Thank you very much, I would have never guessed that.

cdietrich commented 2 years ago

of course it would be better if buildship showed an error dialog

RobertWalterU3d commented 2 years ago

Do you want me to add a feature request for that at buildship repo linking this issue?

cdietrich commented 2 years ago

at least you can hint them on the issue. https://github.com/eclipse/buildship