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

时间:2015-02-25 09:06:32

标签: grails plugins

您好我正在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.

的错误

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

感谢。

1 个答案:

答案 0 :(得分:3)

这可能是不必要的分号。

在不太可能的情况下,它涉及的更多,请确保您在IDE之外工作以减少活动变量的数量。首先在Grails中使用它,然后在GGTS / IntelliJ /等中使用它。

对于插件而言, 的过程与应用相同;为包含这些类的BuildConfig.groovy中的jar添加依赖项,并运行grails compile以触发依赖项解析。这将把jar下载到你当地的Maven / Ivy / Gradle缓存中,如果它还没有,并将它添加到应用程序的类路径中。

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

要实现此目的,请将其添加到dependencies块并运行grails compile

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

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