Maven打包的jar文件在运行时找不到主类


之前搞定了ip aggregation的shell script版本,所以就着手在flink上用java实现对pcap文件的处理。然而java好写,遇到的其他问题倒是不少。

  1. 首先就是pcap4j这个库在mac上的使用,这里是它的Github,貌似是一个日本程序猿写的,README当中并没有写明在macOS中如何使用,只是给出一个链接,是另一位程序猿在macOS上做的测试,也是几年前的事情了。
    鼓捣了很久,过程很繁琐,也依然没有安好,这个时候我发现这个Github主页上有一个作者写的关于该项目的网址https://www.pcap4j.org/,点进去发现在mac上使用Maven就可以极其简单的使用这个库。
  • 安装homebrew。
  • 打开Terminal,安装libpcap库:brew install libpcap
  • 安装Maven,在Terminal输入mvn -version如果没有相关版本信息,请检查$JAVA_HOME$PATH
  • 在Maven中添加pcap4j的dependencies,随便生成一个quickstart项目,打开根目录的pom.xml文件,加入:
Maven打包的jar文件在运行时找不到主类_第1张图片
pom.xml
  • 愉快的写代码吧!(首次运行mvn package时会消耗一定时间下载相应的库。)
  1. 环境已经搭好,准备找个sample先测试下,这个项目的作者很贴心的提供了一些samples,随便copy了一个,用Maven打包了一个jar文件,java -jar sample.jar之后提示无法找到主类错误。我第一反应就是看下MANIFEST.MF文件,果然文件中并没有Main-Class,添上就是咯。信心满满再次打包,结果运行仍然提示找不到主类。研究了一会发现Maven的一个插件可以解决这个问题——maven-assembly-plugin。
    只需要在pom.xml文件中加入:
  
    
      
        org.apache.maven.plugins
        maven-assembly-plugin
        2.5.5
        
          
            
              MainClassName
            
          
          
            jar-with-dependencies
          
        
      
    
  

这样就可以正常使用java -jar ***.jar来运行啦!

  1. Tips
  • Maven的本地库一般位于~/.m2/repository/,pcap4j在org的文件夹内。
  • pcap4j需要管理员权限。

Cheers!####

你可能感兴趣的:(Maven打包的jar文件在运行时找不到主类)