복붙노트

[SPRING] Gradle - 메인 클래스를 찾지 못했습니다.

SPRING

Gradle - 메인 클래스를 찾지 못했습니다.

Gradle을 사용하고 gradlew 실행 명령을 사용할 때 다음 오류로 실행되는 매우 간단한 프로젝트를 실행하려고합니다.

메인 클래스 'hello.HelloWorld'를 찾거나로드 할 수 없습니다.

다음은 내 파일 구조입니다.

SpringTest
    -src
        -hello
            -HelloWorld.java
            -Greeter.java
    -build
         -libs
         -tmp
    -gradle
         -wrapper
    -build.gradle
    -gradlew
    -gradlew.bat

libs와 tmp 폴더의 내용을 제외 시켰습니다. 왜냐하면이 문제에 대한 관련 정보가 될 것이라고 생각지 않았지만 필요한 경우 추가 할 수 있습니다.

여기 내 build.gradle 파일입니다 :

apply plugin: 'java'
apply plugin: 'application'
apply plugin: 'eclipse'

mainClassName = 'hello/HelloWorld'

repositories {
    mavenLocal()
    mavenCentral()
}

dependencies {
    compile "joda-time:joda-time:2.2"
}

jar {
    baseName = "gs-gradle"
    version = "0.1.0"
}

task wrapper(type: Wrapper) {
    gradleVersion = '1.11'
}

이 문제를 해결하는 방법에 대한 아이디어가 있습니까? mainClassName 특성에 대한 모든 종류의 것들을 시도했지만 아무것도 작동하지 않는 것 같습니다.

해결법

  1. ==============================

    1.mainClassName으로 sourceSet을 다른 것으로 두 가지 문제점을 보았습니다.

    mainClassName으로 sourceSet을 다른 것으로 두 가지 문제점을 보았습니다.

  2. ==============================

    2.메인 클래스를 매니페스트에 넣으려면 build.gradle을 수정하십시오.

    메인 클래스를 매니페스트에 넣으려면 build.gradle을 수정하십시오.

    jar {
        manifest {
            attributes 'Implementation-Title': 'Gradle Quickstart',
                       'Implementation-Version': version,
                       'Main-Class': 'hello.helloWorld'
        }
    }
    
  3. ==============================

    3.나는 인터넷에서 솔루션을 찾을 수 없었기 때문에이 문제에 직면하여 디버깅하기로 결정했다. 내가 한 모든 mainClassName 전체 경로 (프로젝트의 올바른 하위 디렉터리 함께) ofc 변경합니다.

    나는 인터넷에서 솔루션을 찾을 수 없었기 때문에이 문제에 직면하여 디버깅하기로 결정했다. 내가 한 모든 mainClassName 전체 경로 (프로젝트의 올바른 하위 디렉터리 함께) ofc 변경합니다.

        mainClassName = 'main.java.hello.HelloWorld'
    

    나는 게시물이 작성된 지 거의 1 년이되었지만 누군가가이 정보를 유용하다고 생각할 것입니다.

    행복한 코딩.

  4. ==============================

    4.단지 Netbeans에서 gradle 프로젝트를 실행하려고하는 초보자를 위해 명확하게 : 이를 이해하려면 주 클래스 이름이 어떻게 보이고 gradle 빌드가 어떻게 보이는지 확인해야합니다.

    단지 Netbeans에서 gradle 프로젝트를 실행하려고하는 초보자를 위해 명확하게 : 이를 이해하려면 주 클래스 이름이 어떻게 보이고 gradle 빌드가 어떻게 보이는지 확인해야합니다.

    주 수업 :

    package com.stormtrident;
    
    public class StormTrident {
        public static void main(String[] cmdArgs) {
        }
    }
    

    com.stormtrident 패키지의 일부임을 주목하십시오.

    Gradle 빌드 :

    apply plugin: 'java'
    
    defaultTasks 'jar'
    
    jar {
     from {
            (configurations.runtime).collect {
                it.isDirectory() ? it : zipTree(it)
            }
        }    
        manifest {
            attributes 'Main-Class': 'com.stormtrident.StormTrident'
        }
    }
    
    
    sourceCompatibility = '1.8'
    [compileJava, compileTestJava]*.options*.encoding = 'UTF-8'
    
    if (!hasProperty('mainClass')) {
        ext.mainClass = 'com.stormtrident.StormTrident'
    }
    
    repositories {
        mavenCentral()
    }
    
    dependencies {
        //---apache storm
        compile 'org.apache.storm:storm-core:1.0.0'  //compile 
        testCompile group: 'junit', name: 'junit', version: '4.10'
    }
    
  5. ==============================

    5.얼마 동안 동일한 문제로 어려움을 겪었습니다. 그러나 src / main / java 디렉토리 구조를 만들고 (패키지의 맨 위에서) 소스를 넣으면 예상대로 작동했습니다.

    얼마 동안 동일한 문제로 어려움을 겪었습니다. 그러나 src / main / java 디렉토리 구조를 만들고 (패키지의 맨 위에서) 소스를 넣으면 예상대로 작동했습니다.

    내가 시도한 튜토리얼. gradle 빌드를 실행 한 후에는 빌드 디렉토리 아래에서 클래스를 찾을 수 있어야합니다.

  6. ==============================

    6.내 build.gradle에서, 나는 task를 생성하고 "mainClassName"을 다음과 같이 지정함으로써이 문제를 해결했다 :

    내 build.gradle에서, 나는 task를 생성하고 "mainClassName"을 다음과 같이 지정함으로써이 문제를 해결했다 :

    task(runSimpleXYZProgram, group: 'algorithms', description: 'Description of what your program does', dependsOn: 'classes', type: JavaExec) {
        mainClassName = 'your.entire.package.classContainingYourMainMethod'
    }
    
  7. ==============================

    7.내 응용 프로그램에 아래 코드를 추가하여 해결했습니다.

    내 응용 프로그램에 아래 코드를 추가하여 해결했습니다.

    // 여기에 코드를 입력하세요 이 오류는 build.gradle을 실행할 때 오류가 발생했습니다. 주 클래스 이름이 구성되지 않았으며 해결할 수 없습니다.

    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
    
  8. ==============================

    8.나는 gradle 빌드 (또는 gradle 빌드 폴더를 수동으로 삭제하여 깨끗하게 실행하여 이것을 해결)

    나는 gradle 빌드 (또는 gradle 빌드 폴더를 수동으로 삭제하여 깨끗하게 실행하여 이것을 해결)

    주 클래스를 새 패키지로 이동하고 이전 주 클래스가 여전히 claspath에서 참조되는 경우에 발생합니다

  9. ==============================

    9.이 오류가 발생했을 때 패키지에 수업을하지 않았기 때문입니다. HelloWorld.java 파일을 "패키지"폴더에 넣습니다. 새 패키지 폴더를 만들어야 할 수도 있습니다.

    이 오류가 발생했을 때 패키지에 수업을하지 않았기 때문입니다. HelloWorld.java 파일을 "패키지"폴더에 넣습니다. 새 패키지 폴더를 만들어야 할 수도 있습니다.

    hello 폴더를 마우스 오른쪽 버튼으로 클릭하고 "New"> "Package"를 선택하십시오. 그런 다음 이름을 지정하고 (예 : com.example) HelloWorld.java 클래스를 패키지로 이동하십시오.

  10. ==============================

    10.또는

    또는

  11. ==============================

    11.Kotlin에서 hello.World 클래스를 작성하기로 결정한 경우 mainClassName = "hello.WorldKt"로 참조해야 할 수도 있습니다.

    Kotlin에서 hello.World 클래스를 작성하기로 결정한 경우 mainClassName = "hello.WorldKt"로 참조해야 할 수도 있습니다.

    src / main / java / hello / World.kt :

    package hello
    fun main(args: Array<String>) {
        ...
    }
    // class World {} // this line is not necessary
    
  12. from https://stackoverflow.com/questions/24924932/gradle-could-not-find-or-load-main-class by cc-by-sa and MIT license