当前位置: 首页 > 知识库问答 >
问题:

maven-jar插件找不到我的主类

司空坚
2023-03-14

我有一个Java/Selenium/TestNG/Maven项目。我可以成功创建myproj-0.0.1-SNAPSHOT。jar文件。当我尝试运行它时,我得到一个错误:

$ java -jar myproj-0.0.1-SNAPSHOT.jar
Error: Could not find or load main class utilities.MavenTestInvoker

我的主要目标是能够运行此快照。jar文件,用于在远程计算机上运行我的测试用例。

我在pom中使用了一个构建插件。xml:

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.6.0</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <version>2.19.1</version>
            <configuration>
                <suiteXmlFiles>
                    <suiteXmlFile>testng.xml</suiteXmlFile>
                </suiteXmlFiles>
                <skipTests>true</skipTests>
            </configuration>
        </plugin>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-jar-plugin</artifactId>
            <version>2.3.2</version>
            <configuration>
                <archive>
                    <manifest>
                        <addClasspath>true</addClasspath>
                        <mainClass>utilities.MavenTestInvoker</mainClass>
                    </manifest>
                </archive>
            </configuration>
        </plugin>
    </plugins>
</build>

构建项目时,我使用的是maven命令:“mvn clean package shade:shade”

这就产生了我的优步罐。

以下是依赖项:

<dependencies>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-resources-plugin</artifactId>
        <version>3.0.1</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.shared</groupId>
        <artifactId>maven-invoker</artifactId>
        <version>2.2</version>
    </dependency>
    <dependency>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-shade-plugin</artifactId>
        <version>2.4.3</version>
    </dependency>
plus some others
</dependencies>

我做错了什么?

共有2个答案

阳凌
2023-03-14

请记住,您的项目必须具有正确的文件夹结构,例如,您的代码必须位于src/main/java中

潘意
2023-03-14

包含插件依赖项的正确用法如下所示,您可以在单个位置合并插件依赖项-

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.6.0</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <suiteXmlFiles>
                        <suiteXmlFile>testng.xml</suiteXmlFile>
                    </suiteXmlFiles>
                    <skipTests>true</skipTests>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>2.3.2</version>
            <!--Notice I have removed the configs here. Not required to generate the jar-->
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>3.0.1</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.shared</groupId>
                <artifactId>maven-invoker</artifactId>
                <version>2.2</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-shade-plugin</artifactId>
                <version>2.4.3</version>
            </plugin>
        </plugins>
    </pluginManagement>
</build>

此外,您可以在同一声明中编辑相应的插件配置。

此外,对于使用maven shade插件和maven jar插件,您可能需要分别查看此处和此处的示例。

 类似资料:
  • 所以,我最近创建了我的第一个插件,叫做BetterTeaming。该插件正在使用插口api。插件发布后,一段时间后,有人建议我使用Maven从编译的jar中删除插口api依赖项。这应该缩小文件大小。然而,我对Maven了解不多。我成功地设置了它,并将文件复制到Maven文件夹(包括层次结构截图),但每次我在本地服务器Minecraft上加载插件时,它都会向我抛出ClassNotFoundExcep

  • 问题内容: 我已经尝试了几天,为我的多模块maven项目创建可执行的jar文件。但是,当我尝试运行此jar文件时,出现“找不到或加载主类src.main.java.com.domain.Mainclass”(出于公司隐私的考虑,我更改了名称domain和MainClass) 我已经搜寻了几天,似乎没有任何明显的技巧可行。 我的项目有一个主要的Maven项目,该项目可以下载所有依赖项(packagi

  • 我为我的服务器找到了一个非常好的插件,但它已经死了,作者没有更新它,所以我更新了它,但当我把插件放在我的插件文件夹中时,它没有工作。这是cmd错误]:无法加载“plugins\BossBarMessage”。jar'在文件夹“plugins”org中。布基特。插件。InvalidPlugineException:找不到主类“com”。那唐。bossbarmessage。组织上的“主要”。布基特。插

  • https://mvnrepository.com/artifact/org.apache.tomcat.maven/tomcat8-maven-plugin 当我使用运行时,我得到以下错误: 但是,rt.jar确实存在,并且我的JAVA_HOME环境设置正确: MVN-V Apache Maven 3.3.9(BB52D8502B132EC0A5A3F4C09453C07478323DC5;20

  • 这不是这个问题的重复。我在将外部依赖项包含到Javadoc中时遇到了问题,这不是问题所在。 我正在尝试将我的API部署到Maven Central。除了Maven Javadoc插件外,一切都很顺利。我的API有两个依赖项(Spigot API-org.spigotmc:Spigot API:1.19-R0.1-SNAPSHOT和JetBrains注释-org.JetBrains:Annotati

  • 我有一个多模块mavenSpring启动maven项目。其中一个子模块是一个存根(Spring启动应用程序),我想在myRealApp集成测试期间启动并停止它。 这是模块myRealApp中pom文件的外观。它也有所有的集成测试。它试图在集成测试前阶段启动存根模块。但当我在子模块目录中运行maven goal时,会出现错误: 错误:无法找到或加载主类io。大摇大摆我的浴缸 组织。阿帕奇。专家生命周