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

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

作者: 嫌疑人ZY | 来源:发表于2016-10-12 19:09 被阅读0次

    之前搞定了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文件,加入:
    pom.xml
    • 愉快的写代码吧!(首次运行mvn package时会消耗一定时间下载相应的库。)
    1. 环境已经搭好,准备找个sample先测试下,这个项目的作者很贴心的提供了一些samples,随便copy了一个,用Maven打包了一个jar文件,java -jar sample.jar之后提示无法找到主类错误。我第一反应就是看下MANIFEST.MF文件,果然文件中并没有Main-Class,添上就是咯。信心满满再次打包,结果运行仍然提示找不到主类。研究了一会发现Maven的一个插件可以解决这个问题——maven-assembly-plugin
      只需要在pom.xml文件中加入:
      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-assembly-plugin</artifactId>
            <version>2.5.5</version>
            <configuration>
              <archive>
                <manifest>
                  <mainClass>MainClassName</mainClass>
                </manifest>
              </archive>
              <descriptorRefs>
                <descriptorRef>jar-with-dependencies</descriptorRef>
              </descriptorRefs>
            </configuration>
          </plugin>
        </plugins>
      </build>
    

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

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

    Cheers!####

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/qibiyttx.html