【问题标题】:Why do I get the error 'Error: Could not find or load main class' when I try to create a docker image using a .JAR当我尝试使用 .JAR 创建 docker 映像时,为什么会收到错误“错误:无法找到或加载主类”
【发布时间】:2022-10-14 17:17:27
【问题描述】:

我正在尝试从我的 Spring Boot 项目创建一个映像,并且我想创建一个 Dockerfile,它可以创建我的项目的映像。

经过几次谷歌搜索,我从官方文档中找到了这个教程。

所以我尝试基于它创建一个文件,这就是我得到的:

FROM openjdk:17-jdk-alpine
COPY out/artifacts/DWH_WebServices_jar/DWH_WebServices.jar app.jar
EXPOSE 8080
ENTRYPOINT ["java", "-jar", "/app.jar"]

但是当使用 Intellij 运行 DockerFile 时,我得到了这个错误:

Error: Could not find or load main class com.business.dwh_webservices.DwhWebServicesApplication
Caused by: java.lang.ClassNotFoundException: com.business.dwh_webservices.DwhWebServicesApplication

所以我想也许我在创建 .JAR 时误导了我的班级,但我做对了:

如您在此处看到的,我的课程存在:

这是我的pom.xml


<?xml version="1.0" encoding="UTF-8"?>
<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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.0</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.business</groupId>
    <artifactId>dwh-webservices</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>DWH_WebServices</name>
    <description>DWH_WebServices</description>
    <properties>
        <java.version>17</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>

        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>

        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-jpa</artifactId>
            <version>RELEASE</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
            <version>RELEASE</version>
        </dependency>

        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.28</version>
            <type>jar</type>
        </dependency>
        <dependency>
            <groupId>javax.xml.bind</groupId>
            <artifactId>jaxb-api</artifactId>
            <version>2.3.1</version>
        </dependency>
        <dependency>
            <groupId>org.javassist</groupId>
            <artifactId>javassist</artifactId>
            <version>3.25.0-GA</version>
        </dependency>
        <dependency>
            <groupId>com.microsoft.sqlserver</groupId>
            <artifactId>mssql-jdbc</artifactId>
            <version>6.2.2.jre8</version>
        </dependency>
        <dependency>
            <groupId>com.google.guava</groupId>
            <artifactId>guava</artifactId>
            <version>31.0.1-jre</version>
        </dependency>
    </dependencies>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

我究竟做错了什么 ?

【问题讨论】:

  • 请显示您的 pom.xml 的相关部分。另外你是如何生成jar的?
  • 你是如何创建 JAR 的?您必须使用 mvn 包
  • 我跟着this 生成了jar
  • 成功了,谢谢@SimonMartinelli

标签: java spring spring-boot docker


【解决方案1】:

我使用了mvn package,它成功了!

感谢@SimonMartinelli。

【讨论】:

    猜你喜欢
    • 2017-11-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-03
    • 1970-01-01
    • 2020-11-07
    • 2014-05-10
    相关资源
    最近更新 更多