Java Maven新手:找不到符号错误

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

我在使用Maven编译基本java应用程序时遇到问题。这是我第一次使用这个程序,它是为依赖关系管理而选择的

申请表如下

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...