[SPRING] Gradle - 메인 클래스를 찾지 못했습니다.
SPRINGGradle - 메인 클래스를 찾지 못했습니다.
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.mainClassName으로 sourceSet을 다른 것으로 두 가지 문제점을 보았습니다.
mainClassName으로 sourceSet을 다른 것으로 두 가지 문제점을 보았습니다.
-
==============================
2.메인 클래스를 매니페스트에 넣으려면 build.gradle을 수정하십시오.
메인 클래스를 매니페스트에 넣으려면 build.gradle을 수정하십시오.
jar { manifest { attributes 'Implementation-Title': 'Gradle Quickstart', 'Implementation-Version': version, 'Main-Class': 'hello.helloWorld' } }
-
==============================
3.나는 인터넷에서 솔루션을 찾을 수 없었기 때문에이 문제에 직면하여 디버깅하기로 결정했다. 내가 한 모든 mainClassName 전체 경로 (프로젝트의 올바른 하위 디렉터리 함께) ofc 변경합니다.
나는 인터넷에서 솔루션을 찾을 수 없었기 때문에이 문제에 직면하여 디버깅하기로 결정했다. 내가 한 모든 mainClassName 전체 경로 (프로젝트의 올바른 하위 디렉터리 함께) ofc 변경합니다.
mainClassName = 'main.java.hello.HelloWorld'
나는 게시물이 작성된 지 거의 1 년이되었지만 누군가가이 정보를 유용하다고 생각할 것입니다.
행복한 코딩.
-
==============================
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.얼마 동안 동일한 문제로 어려움을 겪었습니다. 그러나 src / main / java 디렉토리 구조를 만들고 (패키지의 맨 위에서) 소스를 넣으면 예상대로 작동했습니다.
얼마 동안 동일한 문제로 어려움을 겪었습니다. 그러나 src / main / java 디렉토리 구조를 만들고 (패키지의 맨 위에서) 소스를 넣으면 예상대로 작동했습니다.
내가 시도한 튜토리얼. gradle 빌드를 실행 한 후에는 빌드 디렉토리 아래에서 클래스를 찾을 수 있어야합니다.
-
==============================
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.내 응용 프로그램에 아래 코드를 추가하여 해결했습니다.
내 응용 프로그램에 아래 코드를 추가하여 해결했습니다.
// 여기에 코드를 입력하세요 이 오류는 build.gradle을 실행할 때 오류가 발생했습니다. 주 클래스 이름이 구성되지 않았으며 해결할 수 없습니다.
public static void main(String[] args) { SpringApplication.run(Application.class, args); }
-
==============================
8.나는 gradle 빌드 (또는 gradle 빌드 폴더를 수동으로 삭제하여 깨끗하게 실행하여 이것을 해결)
나는 gradle 빌드 (또는 gradle 빌드 폴더를 수동으로 삭제하여 깨끗하게 실행하여 이것을 해결)
주 클래스를 새 패키지로 이동하고 이전 주 클래스가 여전히 claspath에서 참조되는 경우에 발생합니다
-
==============================
9.이 오류가 발생했을 때 패키지에 수업을하지 않았기 때문입니다. HelloWorld.java 파일을 "패키지"폴더에 넣습니다. 새 패키지 폴더를 만들어야 할 수도 있습니다.
이 오류가 발생했을 때 패키지에 수업을하지 않았기 때문입니다. HelloWorld.java 파일을 "패키지"폴더에 넣습니다. 새 패키지 폴더를 만들어야 할 수도 있습니다.
hello 폴더를 마우스 오른쪽 버튼으로 클릭하고 "New"> "Package"를 선택하십시오. 그런 다음 이름을 지정하고 (예 : com.example) HelloWorld.java 클래스를 패키지로 이동하십시오.
-
==============================
10.또는
또는
-
==============================
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
from https://stackoverflow.com/questions/24924932/gradle-could-not-find-or-load-main-class by cc-by-sa and MIT license