Java Maven新手:找不到符号错误
我在使用Maven编译基本java应用程序时遇到问题。这是我第一次使用这个程序,它是为依赖关系管理而选择的 申请表如下Java Maven新手:找不到符号错误,java,maven,Java,Maven,我在使用Maven编译基本java应用程序时遇到问题。这是我第一次使用这个程序,它是为依赖关系管理而选择的 申请表如下 package com.ender.storm; import com.ender.storm.RedisPubSubSpout; /** * Hello world! * */ public class App { public static void main( String[] args ) { RedisPubSubSpout
package com.ender.storm;
import com.ender.storm.RedisPubSubSpout;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
RedisPubSubSpout spout = RedisPubSubSpout("redis://129.196.196.166", 6379, "WebhookEvents");
System.out.println( "Hello World!" );
}
}
package com.ender.storm;
import static backtype.storm.utils.Utils.tuple;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisPubSub;
import backtype.storm.spout.SpoutOutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.base.BaseRichSpout;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.tuple.Fields;
import backtype.storm.utils.Utils;
public class RedisPubSubSpout extends BaseRichSpout {
static final long serialVersionUID = 737015318988609460L;
static Logger LOG = Logger.getLogger(RedisPubSubSpout.class);
SpoutOutputCollector _collector;
final String host;
final int port;
final String pattern;
LinkedBlockingQueue<String> queue;
JedisPool pool;
public RedisPubSubSpout(String host, int port, String pattern) {
this.host = host;
this.port = port;
this.pattern = pattern;
}
class ListenerThread extends Thread {
LinkedBlockingQueue<String> queue;
JedisPool pool;
String pattern;
public ListenerThread(LinkedBlockingQueue<String> queue, JedisPool pool, String pattern) {
this.queue = queue;
this.pool = pool;
this.pattern = pattern;
}
public void run() {
JedisPubSub listener = new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
queue.offer(message);
}
@Override
public void onPMessage(String pattern, String channel, String message) {
queue.offer(message);
}
@Override
public void onPSubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
@Override
public void onPUnsubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
@Override
public void onSubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
@Override
public void onUnsubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
};
Jedis jedis = pool.getResource();
try {
jedis.psubscribe(listener, pattern);
} finally {
pool.returnResource(jedis);
}
}
};
public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
_collector = collector;
queue = new LinkedBlockingQueue<String>(1000);
pool = new JedisPool(new JedisPoolConfig(),host,port);
ListenerThread listener = new ListenerThread(queue,pool,pattern);
listener.start();
}
public void close() {
pool.destroy();
}
public void nextTuple() {
String ret = queue.poll();
if(ret==null) {
Utils.sleep(50);
} else {
_collector.emit(tuple(ret));
}
}
public void ack(Object msgId) {
// TODO Auto-generated method stub
}
public void fail(Object msgId) {
// TODO Auto-generated method stub
}
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("message"));
}
public boolean isDistributed() {
return false;
}
}
我们的类是从中复制的
并放置在与应用程序类相同的文件夹中
编辑:我的文件夹中的类如下
package com.ender.storm;
import com.ender.storm.RedisPubSubSpout;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
RedisPubSubSpout spout = RedisPubSubSpout("redis://129.196.196.166", 6379, "WebhookEvents");
System.out.println( "Hello World!" );
}
}
package com.ender.storm;
import static backtype.storm.utils.Utils.tuple;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import org.apache.log4j.Logger;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisPubSub;
import backtype.storm.spout.SpoutOutputCollector;
import backtype.storm.task.TopologyContext;
import backtype.storm.topology.base.BaseRichSpout;
import backtype.storm.topology.OutputFieldsDeclarer;
import backtype.storm.tuple.Fields;
import backtype.storm.utils.Utils;
public class RedisPubSubSpout extends BaseRichSpout {
static final long serialVersionUID = 737015318988609460L;
static Logger LOG = Logger.getLogger(RedisPubSubSpout.class);
SpoutOutputCollector _collector;
final String host;
final int port;
final String pattern;
LinkedBlockingQueue<String> queue;
JedisPool pool;
public RedisPubSubSpout(String host, int port, String pattern) {
this.host = host;
this.port = port;
this.pattern = pattern;
}
class ListenerThread extends Thread {
LinkedBlockingQueue<String> queue;
JedisPool pool;
String pattern;
public ListenerThread(LinkedBlockingQueue<String> queue, JedisPool pool, String pattern) {
this.queue = queue;
this.pool = pool;
this.pattern = pattern;
}
public void run() {
JedisPubSub listener = new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
queue.offer(message);
}
@Override
public void onPMessage(String pattern, String channel, String message) {
queue.offer(message);
}
@Override
public void onPSubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
@Override
public void onPUnsubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
@Override
public void onSubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
@Override
public void onUnsubscribe(String channel, int subscribedChannels) {
// TODO Auto-generated method stub
}
};
Jedis jedis = pool.getResource();
try {
jedis.psubscribe(listener, pattern);
} finally {
pool.returnResource(jedis);
}
}
};
public void open(Map conf, TopologyContext context, SpoutOutputCollector collector) {
_collector = collector;
queue = new LinkedBlockingQueue<String>(1000);
pool = new JedisPool(new JedisPoolConfig(),host,port);
ListenerThread listener = new ListenerThread(queue,pool,pattern);
listener.start();
}
public void close() {
pool.destroy();
}
public void nextTuple() {
String ret = queue.poll();
if(ret==null) {
Utils.sleep(50);
} else {
_collector.emit(tuple(ret));
}
}
public void ack(Object msgId) {
// TODO Auto-generated method stub
}
public void fail(Object msgId) {
// TODO Auto-generated method stub
}
public void declareOutputFields(OutputFieldsDeclarer declarer) {
declarer.declare(new Fields("message"));
}
public boolean isDistributed() {
return false;
}
}
使用的pom.xml文件
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ender.storm</groupId>
<artifactId>Storm</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>Storm</name>
<url>http://maven.apache.org</url>
<build>
<pluginManagement>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<source>1.7</source>
<target>1.7</target>
<compilerArgument></compilerArgument>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
<dependencies>
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-core</artifactId>
<version>0.9.1-incubating</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.6.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>
它编译得很好。有人能解释一下我做错了什么吗?我以前从未遇到过这样的问题 这条线
RedisPubSubshout喷口=RedisPubSubshout(“redis://129.196.196.166“,6379,“网络电话”)代码>
应该是
redispubsubout喷口=新的redispubsubout(“redis://129.196.196.166“,6379,“网络电话”)代码>
您缺少新的操作符
您当前的语法试图在这一行中找到名为redispubOut
的本地函数
RedisPubSubshout喷口=RedisPubSubshout(“redis://129.196.196.166“,6379,“网络电话”)代码>
应该是
redispubsubout喷口=新的redispubsubout(“redis://129.196.196.166“,6379,“网络电话”)代码>
您缺少新的操作符
您当前的语法试图在这一行中找到名为redispubOut
的本地函数
RedisPubSubshout喷口=RedisPubSubshout(“redis://129.196.196.166“,6379,“网络电话”)代码>
应该是
redispubsubout喷口=新的redispubsubout(“redis://129.196.196.166“,6379,“网络电话”)代码>
您缺少新的操作符
您当前的语法试图在这一行中找到名为redispubOut
的本地函数
RedisPubSubshout喷口=RedisPubSubshout(“redis://129.196.196.166“,6379,“网络电话”)代码>
应该是
redispubsubout喷口=新的redispubsubout(“redis://129.196.196.166“,6379,“网络电话”)代码>
您缺少新的操作符
当前语法正在尝试查找名为redispubOut
//RedisPubSubSpout spout = RedisPubSubSpout...