java.lang.NoClassDefFoundError,no main manifest attribute in xxx.jar

  1. 问题:
    在linux中maven进行打包时出现java.lang.NoClassDefFoundError的错误,在idea中不会出现此类问题
    原因:
    对比linux中打的jar包和idea中打的jar包,发现linux中的jar包明显小于idea的jar包
    可见在打jar包时没有将依赖包导入
    解决方案:
    使用Maven Assembly插件jar-with-dependencies将它打包为一个jar
	<build>
        <plugins>
            <plugin>
                <artifactId>maven-assembly-plugin</artifactId>
                <configuration>
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <archive>
                        <manifest>
                            <mainClass>com.hbase2Redis.Hbase2Redis</mainClass>
                            //这个是打包程序的主程序类
                        </manifest>
                    </archive>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
  1. 问题:
    no main manifest attribute, in xxx.jar
    原因:
    一般情况下,java 打包成 jar 包需要在 MANIFEST.MF 中指定 Main-Class 项,以便运行 java -jar xxx.jar 时找到对应的主类。
    因为-jar的含义就是后面跟的jar包是有main class可独立运行,所以需要在打包成jar包时指定这个类;否则,需要在执行的时候手动指定
    解决方案1:
    在pom文件中指定main class
	<build>
    <plugins>
        <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-jar-plugin</artifactId>
        <version>3.1.0</version>
        <configuration>
            <archive>
            <manifest>
                <addClasspath>true</addClasspath>
                <classpathPrefix>lib/</classpathPrefix>
                <mainClass>ParserLog</mainClass>(指定main class)
            </manifest>
            </archive>
        </configuration>
        </plugin>
    </plugins>
    </build> 

解决方案2:

java -cp SPARQLParser.jar ParserLog
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值