用于实现语言服务器的 Fat Jar

Fat Jar to Implement a Language Server

我正在尝试构建一个语言服务器,作为 eclipse che 的 sidecar 实现。我从我创建的 xtext 语言服务器构建了一个 fat jar。我可以使用这个 fat jar 在 dockerfile 中实现我的语言服务器,以便 运行 我的语言服务器作为容器吗?

我写了一个 Dockerfile 如下:

FROM barais/eclipse-xtend
ADD build/libs/dsl-language-server-ls.jar dsl-language-server-ls.jar
RUN sudo apt-get install socat
CMD socat TCP4-LISTEN:4417,reuseaddr,fork EXEC:"mydsl"

"dsl-language-server-ls.jar"是我的工程(即LS)构建出来的jar文件。我的问题是,我可以通过包含上述 dockerfile 中的 .jar 文件来 运行 我的语言服务器吗?它实际上在 eclipse che 中工作,但我仍然遇到管道损坏错误和超时错误,这让我怀疑我的方法。

Language Server Initialization Error

这是我遇到的错误。

这只有在您正确打包 docker 图片时才有效

  • 确保包含 java 8
  • 确保您不仅包含 jar,还包含构建目录中的启动脚本
  • 或者您只需调用 java -jar yourjar.jar 而不是 mydsl 启动脚本