Основной класс не обнаружил ошибку при переходе с maven на gradle

Я переношу проект maven в gradle в STS.

Мой pom.xml:

    <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.myPack</groupId>
    <artifactId>sdk-devproxy</artifactId>
    <version>0.0.1-RELEASE</version>
    <packaging>jar</packaging>

    <name>sdk-devproxy</name>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-parent</artifactId>
                <version>1.5.10.RELEASE</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-parent</artifactId>
                <version>Edgware.SR3</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-oauth2</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zuul</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-log4j</artifactId>
            <version>1.3.8.RELEASE</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.auth0/java-jwt -->
        <dependency>
            <groupId>com.auth0</groupId>
            <artifactId>java-jwt</artifactId>
            <version>3.3.0</version>
        </dependency>
    </dependencies>

    <build>
        <finalName>sdk-devproxy</finalName>

        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>

        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
            </plugin>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <mainClass>com.myPack.devproxy.DevProxyApp</mainClass>
                </configuration>
                <executions>
                    <execution>
                        <goals>
                            <goal>repackage</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <version>3.1.0</version>
            </plugin>

        </plugins>
    </build>
</project>

Я использовал автоматическую команду преобразования maven для преобразования gradle «gardle init» и получил следующий build.gradle.

    apply plugin: 'java'
apply plugin: 'maven'

group = 'com.myPack'
version = '0.0.1-RELEASE'

description = """sdk-devproxy"""

sourceCompatibility = 1.8
targetCompatibility = 1.8



repositories {

     maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-oauth2', version:'1.2.2.RELEASE'
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-zuul', version:'1.4.4.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version:'1.5.10.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j', version:'1.3.8.RELEASE'
    compile group: 'com.auth0', name: 'java-jwt', version:'3.3.0'
}

Поскольку эта сборка успешна, но пока я запускаю приложение весенней загрузки, оно дает

    Error: Could not find or load main class com.myPack.mindsphere.devproxy.DevProxyApp

Я пробовал обновлять, перестраивать, обновлять проект gradle и т. д. Я также указал имя основного класса, как показано ниже:

    jar {
  manifest {
    attributes(
      'Class-Path': configurations.compile.collect { it.getName() }.join(' '),
      'Main-Class': 'com.myPack.mindsphere.devproxy.DevProxyApp'
    )
  }
}

В чем может быть проблема:

  • проблема с плагином или упаковкой?
  • проблема с совместимостью jar?
  • или что-то другое ?

person smruti ranjan    schedule 29.05.2018    source источник
comment
попробуйте удалить путь к классу на некоторое время, т.е. attributes 'Main-Class': 'com.myPack.mindsphere.devproxy.DevProxyApp', и поделитесь полученной ошибкой.   -  person Vinay Prajapati    schedule 29.05.2018
comment
та же ошибка без этого   -  person smruti ranjan    schedule 29.05.2018


Ответы (1)


Вы пытались использовать:

  • ./gradlew bootRepackage или ./gradlew bootJar для создания исполняемого файла jar
  • ./gradlew bootRun бежать

описано как

https://docs.spring.io/spring-boot/docs/2.0.2.RELEASE/gradle-plugin/reference/html/

Если вы используете версию gradle Gradle 3.4 или более позднюю, которая использует задачу bootJar вместо bootRepackage согласно последней документации https://spring.io/blog/2017/04/05/spring-boot-s-new-gradle-plugin

Задача bootRepackage была заменена задачами bootJar и bootWar для создания исполняемых файлов jar и war соответственно. Обе задачи расширяют эквивалентную стандартную задачу Gradle jar или war, предоставляя вам доступ ко всем обычным параметрам конфигурации и поведению.

Текущая конфигурация вашего приложения:

  1. Обновите файл сборки следующим образом:

build.gradle

apply plugin: 'java'
apply plugin: 'maven'
//apply plugin: 'io.spring.dependency-management'

group = 'com.myPack'
version = '0.0.1-RELEASE'

description = """sdk-devproxy"""

sourceCompatibility = 1.8
targetCompatibility = 1.8

buildscript {
    ext {
        springBootVersion = '2.0.1.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath(
          "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

apply plugin: 'org.springframework.boot'

repositories {

     maven { url "http://repo.maven.apache.org/maven2" }
}
dependencies {
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-oauth2', version:'1.2.2.RELEASE'
    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter-zuul', version:'1.4.4.RELEASE'
    compile group: 'org.springframework.boot', name: 'spring-boot-starter-web', version:'1.5.10.RELEASE'
    //compile group: 'org.springframework.boot', name: 'spring-boot-starter-log4j', version:'1.3.8.RELEASE'
    compile group: 'com.auth0', name: 'java-jwt', version:'3.3.0'
}

bootJar {
    mainClassName = 'com.myPack.mindsphere.devproy.DevProxyApp'
}
  1. Соберите банку, используя ниже. Это создаст sdk-devproxy-0.0.1-RELEASE.jar в каталоге build/libs вашего проекта.

    постепенная сборка

  2. Запустите приложение, используя:

    запуск gradlew

person piy26    schedule 29.05.2018
comment
@smrutiranjan: Пожалуйста, найдите рабочую конфигурацию для вашей программы и способ запуска ее в качестве загрузочного приложения. - person piy26; 29.05.2018