Storm在IntelliJ IDEA下开发的注意事项

一、Maven工程文件pom.xml的编写

Maven通过pom.xml进行代码文件搜寻、包依赖处理,需要注意的是:

  • 设置项目的文件编码和所使用的JDK版本

      
       UTF-8
       1.8
       1.8
      
    

  • 设置编译采用的插件工具,这里推荐采用maven-assembly-plugin

          
            maven-assembly-plugin
            
              
                jar-with-dependencies
              
              
                
                  cn.com.superengine.AppMainTopologyRunner
                
              
            
            
              
                make-assembly
                package
                
                  single
                
              
            
          
    

    如果采用的是 maven-jar-plugin 编译生成的jar不带依赖包

          
            org.apache.maven.plugins
            maven-jar-plugin
            3.0.2
            
              
                
                  cn.com.superengine.AppMainTopologyRunner
                
              
            
          
    

    执行出现以下结果:

    Error: Unable to initialize main class cn.com.superengine.AppMainTopologyRunner
    Caused by: java.lang.NoClassDefFoundError: org/apache/storm/topology/IRichSpout`
    

  • 需要指定依赖的storm插件版本,不同的版本引用方式不同:

    • storm 最新正式版

      import org.apache.storm.*;
      
          
            org.apache.storm
            storm-core
            1.1.1
          
      

    • storm兼容版

      import backtype.storm.*;
      
          
            org.apache.storm
            storm-core
            0.9.3
          
      

二、项目中Package和Class文件的创建顺序

  1. 使用File → New Project → Maven (此处不用使用Maven内置模板创建) → Next … → 完成
  2. src/main/java下新建项目的包信息,例如cn.com.superengine
  3. cn.com.superengine目录下新建Topology主文件
  4. cn.com.superengine目录下新建topology文件夹
  5. 在topology文件夹内新建对应的Class,实现Spout和相应Bolts
  6. 如有外部链接需要,可以建立service文件夹,编写相应的外部接口服务类

三、本地资源文件的加载

  1. 使用ClassLoader.getSystemResourceAsStream("baidutop.txt")就能加载src/main/java/resource下的资源文件。
  2. 同时注意Spout实现中的outputCollector消息的传递

你可能感兴趣的:(Storm在IntelliJ IDEA下开发的注意事项)