当我尝试在JavaWebSocket的消息函数中使用amazon凭据时,出现了一个未定义类的found错误
我在eclipse控制台中的错误如下当我尝试在JavaWebSocket的消息函数中使用amazon凭据时,出现了一个未定义类的found错误,java,amazon-web-services,websocket,Java,Amazon Web Services,Websocket,我在eclipse控制台中的错误如下 @ServerEndpoint("/echo") public class EchoServer { /** * @OnOpen allows us to intercept the creation of a new session. * The session class allows us to send data to the user. * In the method onOpen, we'll let the user know th
@ServerEndpoint("/echo")
public class EchoServer {
/**
* @OnOpen allows us to intercept the creation of a new session.
* The session class allows us to send data to the user.
* In the method onOpen, we'll let the user know that the handshake was
* successful.
*/
@OnOpen
public void onOpen(Session session){
System.out.println(session.getId() + " has opened a connection");
try {
session.getBasicRemote().sendText("Connection Established");
} catch (IOException ex) {
ex.printStackTrace();
}
}
/**
* When a user sends a message to the server, this method will intercept the message
* and allow us to react to it. For now the message is read as a String.
*/
@OnMessage
public void onMessage(String message, final Session session){
System.out.println("Message from " + session.getId() + ": " + message);
AWSCredentials credentials = new ProfileCredentialsProvider("default").getCredentials();
//create a new SNS client and set endpoint
AmazonSNSClient snsClient = new AmazonSNSClient(credentials);
Region usWest2 = Region.getRegion(Regions.US_WEST_2);
snsClient.setRegion(usWest2);
StatusListener listener = new StatusListener(){
public void onStatus(Status status) {
if( status.getGeoLocation() != null){
double lat=status.getGeoLocation().getLatitude(),lon=status.getGeoLocation().getLongitude();
//publish
String str = lat+":"+lon;
if (session.isOpen()) {
try {
AlchemyAPI alchemyObj = AlchemyAPI.GetInstanceFromFile("D:\\NYU Poly\\Fall 15\\Cloud Computing\\alchemyapi_java\\testdir\\api_key.txt");
Document doc = alchemyObj.TextGetTextSentiment(status.getText());
System.out.println(getStringFromDocument(doc));
//publish to an SNS topic
String msg = getStringFromDocument(doc);
//String topicArn = "arn:aws:sns:us-west-2:834106634132:Twitter";
//PublishRequest publishRequest = new PublishRequest(topicArn, msg);
//PublishResult publishResult = snsClient.publish(publishRequest);
//print MessageId of message published to SNS topic
//System.out.println("MessageId - " + publishResult.getMessageId());
session.getBasicRemote().sendText(str);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
public void onDeletionNotice(StatusDeletionNotice statusDeletionNotice) {}
public void onTrackLimitationNotice(int numberOfLimitedStatuses) {}
public void onException(Exception ex) {
ex.printStackTrace();
}
@Override
public void onScrubGeo(long arg0, long arg1) {
// TODO Auto-generated method stub
}
@Override
public void onStallWarning(StallWarning arg0) {
// TODO Auto-generated method stub
}
};
//////////////////////////////////////////////////////////
ConfigurationBuilder cb = new ConfigurationBuilder();
cb.setDebugEnabled(true)
.setOAuthConsumerKey("gjYHUww0ciM67sRD7CEuanLF7")
.setOAuthConsumerSecret("dflwPXdHNX2g6DSI3xSE2Imskws445LTNSjS06Y1n8cgLpDsDD")
.setOAuthAccessToken("47097798-m5IOQF1CFojXsapxK4VmakFECLVOPknWfkRB3pGG7")
.setOAuthAccessTokenSecret("8wNFLHFix9LDgYM7ddffN410bTsGTSvXRPwnOSUbHFX0u");
//.setOAuthConsumerKey("WHr6IPKnShflqkiADUmR0EJWD")
// .setOAuthConsumerSecret("NagLvgroGTVJBwHAJrZrPdOXUhETWUjBM7Y0qoEHewvO5Oh38Y")
// .setOAuthAccessToken("262545045-Jfnnh8N6wO5WHc43SWUgIgRbZ8QpuNhVtI3WNfiW")
// .setOAuthAccessTokenSecret("KGfORKRc3h9Lxko0GHIZY71MS7uLWv0Ht4T6EPetkVX1Z");
TwitterStreamFactory tf = new TwitterStreamFactory(cb.build());
TwitterStream twitterStream = tf.getInstance();
twitterStream.addListener(listener);
// sample() method internally creates a thread which manipulates TwitterStream and calls these adequate listener methods continuously.
FilterQuery fq = new FilterQuery();
// String[] track = {"cricket","india","chelsea","#BlackOutDay","#PakVsSA","liverpool",};
// String[] track = {"cricket"};
if(message.equals("")){
double[][] locations = {{-180.0d,-90.0d},{180.0d,90.0d}};
fq.locations(locations);
}
else
{
String[] track = {message};
fq.track(track);
}
// fq.track(track);
twitterStream.filter(fq);
}
/**
* The user closes the connection.
*
* Note: you can't send messages to the client from this method
*/
@OnClose
public void onClose(Session session){
System.out.println("Session " +session.getId()+" has ended");
}
// utility method
private static String getStringFromDocument(Document doc) {
try {
DOMSource domSource = new DOMSource(doc);
StringWriter writer = new StringWriter();
StreamResult result = new StreamResult(writer);
TransformerFactory tf = TransformerFactory.newInstance();
Transformer transformer = tf.newTransformer();
transformer.transform(domSource, result);
return writer.toString();
} catch (TransformerException ex) {
ex.printStackTrace();
return null;
}
}
}
发生了以下错误
SEVERE: No error handling configured for [EchoServer]
类路径上可能没有正确的aws库,或者只是其中的一部分。您是如何将aws java sdk的哪些部分添加到您的应用程序中的?如果这些oauth令牌中的任何一个是真实的,您可能现在就想更改它们
java.lang.RuntimeException: com/amazonaws/auth/profile/ProfileCredentialsProvider
at org.apache.tomcat.websocket.pojo.PojoMessageHandlerBase.handlePojoMethodException(PojoMessageHandlerBase.java:119)
at org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBase.onMessage(PojoMessageHandlerWholeBase.java:82)
at org.apache.tomcat.websocket.WsFrameBase.sendMessageText(WsFrameBase.java:393)
at org.apache.tomcat.websocket.WsFrameBase.processDataText(WsFrameBase.java:494)
at org.apache.tomcat.websocket.WsFrameBase.processData(WsFrameBase.java:289)
at org.apache.tomcat.websocket.WsFrameBase.processInputBuffer(WsFrameBase.java:130)
at org.apache.tomcat.websocket.server.WsFrameServer.onDataAvailable(WsFrameServer.java:60)
at org.apache.tomcat.websocket.server.WsHttpUpgradeHandler$WsReadListener.onDataAvailable(WsHttpUpgradeHandler.java:183)
at org.apache.coyote.http11.upgrade.AbstractServletInputStream.onDataAvailable(AbstractServletInputStream.java:198)
at org.apache.coyote.http11.upgrade.AbstractProcessor.upgradeDispatch(AbstractProcessor.java:96)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:669)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1500)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1456)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Unknown Source)
Caused by: java.lang.NoClassDefFoundError: com/amazonaws/auth/profile/ProfileCredentialsProvider
at EchoServer.onMessage(EchoServer.java:81)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.tomcat.websocket.pojo.PojoMessageHandlerWholeBase.onMessage(PojoMessageHandlerWholeBase.java:80)
... 15 more
Caused by: java.lang.ClassNotFoundException: com.amazonaws.auth.profile.ProfileCredentialsProvider
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
... 21 more
Session 0 has ended