zoukankan      html  css  js  c++  java
  • IDEA导出jar包后运行报错 找不到或无法加载主类

    开发工具:IDEA16

    运行环境:ubuntu

    问题:根据网上的Idea导出jar包的方法,将我的项目导出jar包后运行报错:找不到或无法加载主类。
     
      为了找到这个原因,我重新搭建了一个测试例子,在src/com下新建了一个HelloWorld.java类,输出HelloWorld。然后把它导出jar包,依然报错:找不到或无法加载主类。
      后来打开这个jar包发现在test.jar里边还有一个test.jar包
     
      然后我把里边这个jar包提取出来后,运行java -jar test.jar就不会报错了,也能正常输出HelloWorld
     
      经过各种重复实验,重新尝试每一步的配置,终于发现了错误的地方。
      根据网上的配置,在 Project Structure --> Artifacts中,添加jar包时,选择了copy to the out directory and link via manifest
     
      备注:我参考的Idea打jar包的方法链接是:http://www.cnblogs.com/blog5277/p/5920560.html
        他说:
        选中第一个的话,打完包后是一个jar包
        选中第二个的话,打完包后是一个jar包,外带你项目所用的jar包
     
     
      如果选择了第二个,在下一步的配置中,就会出现两个test.jar。可以看到,上一步骤生成了一个test.jar,并且外边的test.jar还需要再重新创建一个MANIFEST.MF文件
     
      
      经过测试,即使我创建外边的MANIFEST.MF文件时,把里面的test.jar包打进去,依然会报错:找不到或无法加载主类。
     
     
      综上所诉, 我又尝试在最开始选择配置的时候,如果选择extract to the target JAR(提取到目标jar包) 这个选项,那么对于我这个测试项目就完全没问题了,生成的test.jar包里包含MANIFEST.MF文件,并且这个包里不会再有其他的jar包了,就没有问题了
     
      但是如果我生成的jar包,需要引用其他的jar包,需要在下一步,Class Path栏里手动输入引入的jar包。
     
     
      至于这里的classpath如何填写,相当于在之前错误用法时生成的META-INF/MANIFEST.MF文件里所引用的jar包一样。
     
      原创文章,欢迎转载,转载请注明出处!
      
  • 相关阅读:
    PointToPointNetDevice doesn't support TapBridgeHelper
    NS3系列—10———NS3 NodeContainer
    NS3系列—9———NS3 IP首部校验和
    NS3系列—8———NS3编译运行
    【习题 7-6 UVA
    【Good Bye 2017 C】 New Year and Curling
    【Good Bye 2017 B】 New Year and Buggy Bot
    【Good Bye 2017 A】New Year and Counting Cards
    【Educational Codeforces Round 35 D】Inversion Counting
    【Educational Codeforces Round 35 C】Two Cakes
  • 原文地址:https://www.cnblogs.com/acm-bingzi/p/6593892.html
Copyright © 2011-2022 走看看