这是文件,我在import javax.websocket
行和@serverEndpoint("/websocket")
中收到编译错误。为什么不采用注释?
package pack.exp;
import java.io.IOException;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import javax.websocket.OnClose;
import javax.websocket.OnMessage;
import javax.websocket.OnOpen;
import javax.websocket.Session;
import javax.websocket.server.ServerEndpoint;
@ServerEndpoint("/websocket")
public class Hello
{
{
private static Set<Session> clients =
Collections.synchronizedSet(new HashSet<Session>());
@OnMessage
public void onMessage(String message, Session session)
throws IOException {
synchronized(clients){
// Iterate over the connected sessions
// and broadcast the received message
for(Session client : clients){
if (!client.equals(session)){
client.getBasicRemote().sendText(message);
}
}
}
}
@OnOpen
public void onOpen (Session session) {
// Add session to the connected sessions set
clients.add(session);
}
@OnClose
public void onClose (Session session) {
// Remove session from the connected sessions set
clients.remove(session);
}
}
}
请帮我解决此错误。我是否需要在此代码中实现一些特定的API?
答案 0 :(得分:20)
缺少的类是java ee 7 api的一部分。 如果您使用maven构建项目,请查看 在以下存储库
http://mvnrepository.com/artifact/javax/javaee-api/7.0
并将此依赖项添加到您的项目中:
<dependency>
<groupId>javax</groupId>
<artifactId>javaee-api</artifactId>
<version>7.0</version>
</dependency>
如果您不使用maven,可以从上面的页面下载jar。 http://repo1.maven.org/maven2/javax/javaee-api/7.0/javaee-api-7.0.jar
然后你有了API。
答案 1 :(得分:6)
JSR-356定义的javax.websocket
下的类是独立的。它们可以在完全独立的服务器上运行,也可以在Java EE 7容器中运行。
如果您只使用javax.websocket
并且不关心Java EE 7的其余部分,那么只需在提供的范围内使用官方javax.websocket
工件。
这是直接搜索工件的搜索。
https://search.maven.org/artifact/javax.websocket/javax.websocket-api/1.0/bundle
这是maven中央存储库系统的官方搜索页面,它还包括对maven,grails,ivy,buildr,grape和sbt的工件的构建系统引用。
maven pom参考将是:
<dependency>
<groupId>javax.websocket</groupId>
<artifactId>javax.websocket-api</artifactId>
<version>1.0</version>
<scope>provided</scope>
</dependency>
确保不在*.war
文件中包含此工件,因为此功能将由您决定部署到的任何容器提供。 (例如Eclipse Jetty 9.1+或Apache Tomcat 8.0 +)
答案 2 :(得分:0)
你可以新添加服务器说tomcat 7.0,自动解决这个错误。由于支持jar可以在tomcat lib中使用。