maven成功生成jar包,提示找不到主类?(代码片段)

gzshan gzshan     2022-12-09     697

关键词:

问题描述:

??使用maven构建zookeeper项目,完成一个简单的创建组的实例,代码调试完成,使用mvn clean install成功打包得到了jar包,但是在执行时发现使用java -cp target/XXX.jar com.App却提示“找不到或者无法加载主类”,用java -jar对jar包查看,提示“包中没有主清单属性”。

解决办法:

??首先在网上查询了很多相关的问题,逐一进行了排查,包括环境变量的配置、CLASSPATH中有没有当前路径.、主类中有没有main函数、包名是否正确等等。

??最后发现,环境配置都没有问题,并且只有当程序里使用到了第三方jar包时才会出现问题,如果只是一个简单的Hello World程序是可以正常运行的。在经过相关的测试以后,发现问题还是在pom文件上。

??首先,对于pom文件中的每个依赖,scope的属性值要注意,它主要管理依赖的部署。目前可以使用5个值:

  • compile,缺省值,适用于所有阶段,会随着项目一起发布。
  • provided,类似compile,期望JDK、容器或使用者会提供这个依赖。如servlet.jar。
  • runtime,只在运行时使用,如JDBC驱动,适用运行和测试阶段。
  • test,只在测试时使用,用于编译和运行测试代码。不会随项目发布。
  • system,类似provided,需要显式提供包含依赖的jar,Maven不会在Repository中查找它。

??其次,这里报错的主要原因是:pom.xml文件中没有加入mainclass的transformer,如下修改pom文件后,程序运行正确,可以把它作为一个模板运用到其他maven项目中。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.hadoop.sgz</groupId>
  <artifactId>zkStudy</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>zkStudy</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.zookeeper/zookeeper -->
    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.5.4-beta</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/log4j/log4j -->
    <dependency>
      <groupId>log4j</groupId>
      <artifactId>log4j</artifactId>
      <version>1.2.17</version>
    </dependency>
  </dependencies>
<build>
  <plugins>
    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>1.2.1</version>
        <executions>
            <execution>
                <phase>package</phase>
                <goals>
                        <goal>shade</goal>
                </goals>
                    <configuration>
                        <transformers>
                            <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
                                <mainClass>com.hadoop.sgz.App</mainClass>
                            </transformer>
                        </transformers>
                    </configuration>
            </execution>
        </executions>
     </plugin>
  </plugins>
</build>
</project>

Maven Jar 文件找不到主类

】MavenJar文件找不到主类【英文标题】:MavenJarfilecannotfindmainclass【发布时间】:2020-02-2814:37:05【问题描述】:我正在尝试使用IntellijIDEA用Maven编译我的第一个胖jar,有一个带有一个Scala文件的Scala项目。项目结构如下:这是pom.xml... 查看详情

java运行显示“找不到或无法加载主类”!

如图用javac编译记事本文件成功,并且生成了.class文件,但是用java运行时提示找不到或无法加载主类该如何解决呢?解决办法如下:1.由于是在运行阶段出现的问题,那么可能是环境变量配置不当的问题,即可能是classpath路径配... 查看详情

maven打包所有依赖到一个可执行jar中(代码片段)

文章目录需求遇到的问题找不到主类打包时没有包含第三方依赖情况1情况2扩展问题不希望依赖的jar包变成class项目里多个主类,如何动态指定需求普通的MavenJava项目(非Springboot项目),需要打包成一个jar包(... 查看详情

idea使用maven工具打包带有外部jar包时出错-提示程序包不存在和找不到符号(代码片段)

坑向:关于IDEA中使用Maven工具打包具有外部实体jar包作依赖时出现程序包xxx不存在和找不到符号错误的探究1环境描述1.1开发环境:IDEA-2018.31.2新建的项目结构:父空项目(EmptyProject)下带有1个子Maven项目2业务... 查看详情

jar打包完成后提示找不到主类,高手看一下哪一步有问题?

...6,用jarcvfmpz.jara.txtpz命令打包。7,用javawpz.jar命令运行不成功,提示找不到主类。高手看一下是上面那一步有问题还是缺少另外的步骤?是我的打包方式出问题了,我用了另外一种打包方式运行成功!谢谢两位!一般这种问题都... 查看详情

error错误:找不到或无法加载主类

...ies中有个jar包是不可用的,显示红色叉叉。这说明系统找不到这个这个jar文件。解决办法:把这个jar删除即可。eclipse:Eclipse处于打 查看详情

运行java文件显示找不到或无法加载主类怎么解决?

...照你的步骤执行mavenbuild后,导出的jar包运行之后显示找不到或无法加载主类,eclipse中直接运行它,也显示同样的错误,当我用mavenupdateproject之后,又可以直接运行了,执行mavenbuild后,在eclipse中执行这个文件又显示找不到主类... 查看详情

不用maven打jar包(代码片段)

...Apply。 然后build  这样就在我们刚刚指定的outputdirectory生成jar包了。如果改了源码,想要重新打包,那么需要把之前的delete掉,并点击Apply如果不删掉以前的就重新打包的话,可能(我说的是可能)会出现... 查看详情

idea中maven项目,找不到jar包,找不到类;下载未下载完的jar包

执行命令   mvn-Uidea:idea  查看详情

Gradle:即使 jar 包含主类文件获取错误:找不到或加载主类

...:我们使用build.gradle创建了包含所有依赖项的jar文件。它成功创建,所有依赖项和.class文件都在适当的目录下(例如,在co 查看详情

Java JAR:找不到或加载主类

】JavaJAR:找不到或加载主类【英文标题】:JavaJAR:Couldnotfindorloadmainclass【发布时间】:2021-06-0615:59:42【问题描述】:我知道这个问题被问了很多,但我尝试了一些建议,但仍然收到此错误。我运行jar如下:java-jarMyJar-1.0.jarcom.me.ld... 查看详情

idea+maven打jar包(代码片段)

...3】里面不需要的jar包删掉就行。最后点击【ok】然后就会生成一个META-INF的文件夹,里面就是一些配置 查看详情

java运行显示“找不到或无法加载主类”!

...:在文件所在的当前目录下,运行javacTestPlusPlus.java编译成功,生成TestPlusPlus.class文件,这个时候,你用javaTestPlusPlus想运行程序,总会出现”找不到或无法加载主类“的错误。这个时候要注意,之所以找不到,是因为TestPlusPlus在H... 查看详情

使用maven生成可执行jar:找不到类异常

】使用maven生成可执行jar:找不到类异常【英文标题】:Generateexecutablejarwithmaven:classnotfoundexception【发布时间】:2017-07-2319:50:37【问题描述】:我有一个通过maven管理的SpringJMS项目,在部署jar文件(java-jarjarname.jar)时遇到如下问... 查看详情

eclipse打成jar包后找不到类,是怎么回事呢,主类文件打包时已经选了,虚拟机也装了,还是运行不了

...是主类的类名(包括包名)追问这个文件也有的,eclipse自动生成的,里面我刚也看了,主类也在里面了追答右键点jar文件,打开方式选择JavaPlatformSEbinary,也不能运行吗参考技术A看看你的主类名有没有和系统重复的,另外检查下你的j... 查看详情

发布java包运行提示找不到配置文件(代码片段)

...行得好地地,发布成jar包后,一运行就报错,提示找不到配置文件。提示类似这样的错误:FileNotFoundException:jar:file:/xxx-0.0.1-SNAPSHOT.jar!/BOOT-INF 查看详情

关于解决cmd中执行java提示"找不到或无法加载主类"的问题

...生遇到一个问题:在cmd命令行中,用javac编译java文件可以成功,但是用java执行却提示“找不到或无法加载主类”。现将该问题的原因以及解决办法记录一下。先理解一下系统变量path和classpath的作用。path:可执行命令的搜索路径... 查看详情

idea打包jar,运行错误:找不到或无法加载主类

...报了如下错误:经过各种找资料,以及和之前打包且运行成功的jar做对比发现了不同所在二、原因分析具体原因还不是很清楚,待后续补充三、问题解决和可运行jar对比发现,META-INF下面多出这几个文件,只需要删除即可,原因... 查看详情