无法解析 Grails 插件项目导入 javax.websocket

Grails Plugin project import javax.websocket cannot be resolved

您好,我正在使用 Grails 开发一个需要导入这些文件的项目-

import javax.websocket.CloseReason;
import javax.websocket.CloseReason.CloseCode;
import javax.websocket.Endpoint;
import javax.websocket.EndpointConfig;
import javax.websocket.MessageHandler;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.RemoteEndpoint;
import javax.websocket.Session;

所以当我在 Grails 项目上工作时,这些导入工作完美,但现在我被告知将项目转移到将导入到主项目中的 Grails 插件项目,所以现在在这种情况下,当我尝试导入上面提到的文件,它显示了一个错误 The import javax.websocket cannot be resolved.

我尝试 fiddle 解决 BuildConfig.groovy 中的一些依赖项,但无法解决此问题。如果有人尝试过,请告诉我如何在 Grails 插件项目中导入 javax.websocket.* 的文件。

谢谢。

可能是不必要的分号。

在不太可能的情况下,它比这更复杂,请确保您在 IDE 之外工作以减少活动变量的数量。首先让它在 Grails 中运行,然后让它在 GGTS/IntelliJ/etc.

中运行

插件和应用程序的过程完全相同;在 BuildConfig.groovy 中为包含 类 和 运行 grails compile 的 jar 添加依赖项以触发依赖项解析。这会将 jar 下载到本地 Maven/Ivy/Gradle 缓存(如果尚未下载),并将其添加到应用程序的类路径中。

在这种情况下,混淆来自于这些 类 位于应用程序类路径中的 tomcat-embed-websocket-<version>.jar 中,因为您保留了对 [=34= 的默认依赖性] 插件,显然它不是你的插件的依赖项(它可能不应该是)。它在应用程序中巧合地工作,但如果您删除 Tomcat 插件依赖项(例如改用 Jetty),它就会开始失败。

要使其正常工作,请将其添加到您的 dependencies 块和 运行 grails compile:

compile 'javax.websocket:javax.websocket-api:1.1'

您还应该考虑使用 spring-websocket 插件,而不是手动执行所有操作。