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包一样。
 
  原创文章,欢迎转载,转载请注明出处!
  

转载于:https://www.cnblogs.com/acm-bingzi/p/6593892.html

### 回答1: 当我们将一个Java项目打包成可执行的jar文件时,有时会遇到“错误:不到无法加载主类”的情况。这种错误通常是由于打包时指定的主类与实际的主类不一致所致。 要解决这个问题,我们可以采取以下步骤: 1. 确认打包时指定的主类是否正确,可以在项目的配置文件中查看。如Maven项目的pom.xml中的<build><finalName>、<plugins><maven-jar-plugin>等。 2. 检查项目中的类是否被正确地编译到了jar文件中。可以使用压缩软件打开jar文件,查看其中的class文件。 3. 如果上述步骤均正确,还要检查系统环境变量及其它配置是否正确。比如类路径(Classpath)是否设置正确,对于多个jar包,需要通过“:”分隔开。 4. 如果仍然无法解决问题,可以通过在命令行中运行jar文件的方式,查看出错信息,从而得到更具体的错误提示。 总之,“不到无法加载主类”错误通常是由打包时的配置错误造成的,需要仔细确认打包时的配置是否正确,同时结合命令行的出错信息进行排查。 ### 回答2: 在进行Java开发过程中,打包成jar包并在其他环境中运行是常见的操作。然而,在使用Idea进行打包时,有时会出现如下错误提示:“错误: 不到无法加载主类”。本文将从可能的原因和解决方法两个方面进行介绍。 1.可能的原因 (1)主类不存在或名称不正确。 打包成jar包需要在Manifest文件中指定Main-Class。如果在配置中填写的Main-Class名称不正确,或者该类根本不存在,就会出现不到主类的错误。 (2)Main-Class类中存在语法错误或依赖问题。 打包成jar包Main-Class需要正常运行,它依赖于Idea项目中引用的库,如果这些库不存在,或者存在版本不兼容等问题,则也会导致不到主类。 (3)打包成jar包时的配置不正确。 在打包成jar包的过程中,可能需要指定更多的配置参数,如指定主类、依赖库等。如果这些参数没有正确配置,也会出现不到主类的问题。 2.解决方法 (1)检查Main-Class是否正确。 在配置打包成jar包的参数时,应该确认Main-Class名称正确、可用,并且这个类应该能够正常调用,确保打包后jar包可以被正确的运行。 (2)确保依赖库可用并无冲突。 在打包成jar包的过程中,应该确认所有依赖库都已正确引用,依赖库版本之间没有冲突,可以正常使用。 (3)检查配置参数是否正确。 可以通过检查打包成jar包时输入的配置是否正确,如指定Main-Class等,确保jar包可以正确运行。 最后,可以通过反复检查以及多次重新尝试的方法解决这个问题,如果仍然无法解决,就可以考虑请教他人或查阅相关文档,到方法解决问题,确保打包成jar包后能够正常使用。 ### 回答3: Java程序在执行时需要通过指定的主类或者通过Manifest文件中的Main-Class来指定入口函数,如果在打包Jar文件时没有正确指定主类,或者是在执行时没有正确指定入口函数,就会出现不到无法加载主类的错误。 出现这种错误的原因通常有以下几点: 1. 打包Jar文件时没有正确指定主类 在使用Eclipse或者其它IDE进行打包时,需要在打包配置中指定主类,否则打包出来的Jar文件中就没有Manifest文件或者没有正确指定Main-Class。 2. 执行时没有正确指定入口函数 如果打包的Jar文件中存在多个Main函数,需要使用命令行参数或通过配置IDE来指定使用哪个函数作为入口函数。如果没有正确指定,程序就会不到入口函数,报错无法加载主类。 3. Jar文件中包含的类文件没有正确的路径 在打包Jar文件时,需要将项目中的所有依赖文件一起打包进去。如果其中某个类文件没有正确的路径信息,或者依赖的Jar包没有正确打包进去,就会不到无法加载主类。 针对这些因素,我们需要检查打包的方式和打包的工具。如果IDE在打包时已经自动配置好了Main-Class,那么我们应该仔细检查Jar包中的文件,确保所有依赖文件都已经正确打包进去了。如果遇到依赖文件没有正确打包或者路径不对的情况,可以在打包时手动指定需要打包的文件及其路径。 同时,在执行时要注意正确指定入口函数,确保程序能够到正确的入口函数来执行。如果还有问题,建议在代码中增加日志输出,同时查看系统的日志文件,以帮助我们定位问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值