Eclipse 빌드 경로 중첩 오류


122

내 수업을 위해 간단한 JSP / Servlet / Tomcat 웹 응용 프로그램을 만들고 있습니다. 교수님은 기본 동적 웹 프로젝트 구조와 약간 다른 폴더 구조를 사용하도록 요청했습니다. webcontent 폴더를 사용하는 대신 src / main / java 및 src / main / webapp 아래에있는 모든 소스 코드를 원합니다.

앱을 실행하면 환영 파일이 제대로 표시되지만 서블릿에 액세스하려고하면 다음과 같은 결과가 나타납니다.

 Http 500 SEVERE: Allocate exception for servlet InitDb

java.lang.ClassNotFoundException. 빌드 경로 오류라고 확신합니다. 빌드 경로에 final / src가 있지만 경고가 표시됩니다.

"Cannot nest 'final/src/main/webapp/WEB-INF/classes' inside 'final/src'. To enable the    nesting exclude 'main/' from 'final/src'

여기에 이미지 설명 입력

배포 어셈블리에 다음이 있습니다.

<wb-resource deploy-path="/" source-path="/src/main/webapp" tag="defaultRootSource"/> 

main /을 제외하면 경고가 사라지지만 문제가 해결되지 않습니다. 조언을 주시면 감사하겠습니다. 감사.

답변:


309

새로운 프로젝트를 만들 때도 같은 문제가있었습니다. Eclipse 내에서 Java 프로젝트를 만든 다음이를 mavenize 한 다음 Java 빌드 경로 속성을 제거 src/하고 추가 src/main/java하고 src/test/java. Maven 업데이트를 실행하면 중첩 경로 오류가 발생했습니다.
그런 다음 마침내 깨달았습니다-이전에 그 항목을 보지 <sourceDirectory>src</sourceDirectory>못했기 때문에-내가 그것을 mavenize 할 때 작성된 pom 파일에 한 줄이 있습니다. 제거한 후 해결되었습니다.


1
이것은 많은 무작위 트릭 중 하나 일뿐입니다. 이유를 설명하지 않습니다. 따라서 덜 도움이됩니다.
smwikipedia 2015

4
방금 pom 항목의 이름을 scr / main / java로 변경했는데 모두 좋았습니다. 포스트 acheron55 주셔서 감사합니다
Beezer

거기 넣었 어? 또는 어디에서 왔습니까?
Line

23

나는이 스레드에 대한 비 정식적인 대답을 던지고 싶었습니다.

버전 제어 및 엄격한 디렉토리 구조 이유로 인해 제거 src/및 추가 src/main/javasrc/test/java빌드 경로 와 유사한 작업을 수행하는 Acheron의 답변 (최상 답변)을 따를 수 없었습니다 .

저는 실제로이 중첩 된 빌드 경로 문제를 몇 주 동안 끈질 기게 해결했습니다. 문제에 대한 답은 오류 메시지에 암시되어 있습니다.

To enable the nesting exclude 'main/' from 'final/src'

고치다

빌드 경로에서를 Inclusion and Exclusion Patterns클릭 Excluded: (None)한 다음 다음 을 클릭하여 편집해야합니다 Edit....

  1. 네비게이터로 이동하여 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 빌드 경로
  3. 빌드 경로 구성
  4. 소스 (탭)

제외 패턴

거기 main/webapp/WEB-INF/classesExclusion Pattern. 그런 다음 main/webapp/WEB-INF/classes별도의 소스 폴더로 빌드 경로 에 추가 할 수 있습니다 .


10

이 시도:

라이브러리 탭에서 :

Eclipse -> right click on project name in sidebar -> configure build path -> Libraries

웹앱 라이브러리를 제거합니다.

click on "Web App Libraries" -> click "remove"

다시 추가 :

click "Add Library" -> click to highlight "Web App Libraries" -> click "next" -> confirm your desired project is the selected option -> click "Finish"

"Web App Libraries"강조 :

"웹 앱 라이브러리"강조


3

나는 같은 문제가 있었고 위의 정답이 나를 위해 작동하지 않았습니다. 내가 그것을 해결하기 위해 한 것은 Build Path->Configure Build Path소스 탭 으로 가서 모든 소스 (하나의 소스 만 가지고 있음)를 제거하고 거기에서 재구성하는 것이 었습니다. 결국 이클립스에서 프로젝트를 제거하고 오류를 해결하기 위해 maven 프로젝트를 다시 가져 왔습니다.


3

내 경우에는 내가 Gradle을 자연 프로젝트에있는 일식 , 문제가 있었다 build.gradle이 곳, sourceSets지정 :

sourceSets {
    main {
        java {
            srcDir 'src'
        }
    }
 }

이 잘와 작품 것 인 IntelliJ 그러나,보다 같다 일식 하지 둥지처럼 수행 src, src/java, src/resources. 이클립스 에서는 다음과 같이 변경해야합니다.

sourceSets {
    main {
        java {
            srcDir 'src/main/java'
        }
    }
}

3

다음은 간단한 해결책입니다.

  1. 프로젝트 >> 속성 >> 빌드 경로를 마우스 오른쪽 버튼으로 클릭하십시오.
  2. 소스 탭에서 모든 소스 폴더를 선택하십시오.
  3. 그들을 제거하십시오;
  4. 프로젝트 Maven >> Update the project를 마우스 오른쪽 버튼으로 클릭하십시오.

2

빌드 출력이 이동하는 소스와 대상 디렉토리를 분리해야합니다. 또한 어떤 클래스 파일도 소스 디렉토리에서 끝날 수 없다는 점에 유의해야합니다. 이것은 교수님의 조언에 어긋나는 것이 아닙니다. 실제로 그는 ./src/main/java 및 ./src/main/webapp에 대한 maven 표준 소스 구조를 홍보하고 있습니다. 두 번째는 예를 들어 유지되어야합니다. 필수 WEB-INF / web.xml 파일이지만 실제 클래스는 절대 넣지 않습니다.

변경해야 할 것은 대상 디렉토리입니다. 동일한 표준을 사용하고 "./target"이라는 이름을 선택하는 것이 좋습니다. 빌드 된 모든 파일이 여기에 들어가고이를 패키징하면 올바른 배포 가능한 아티팩트가 생성됩니다. 나중에 maven을 사용하도록 마이그레이션하는 경우 스크립팅되고 반복 가능한 방식으로이를 수행하는데도 도움이됩니다.

문제가 해결되기를 바랍니다.


1

받아 들여진 솔루션이 저에게 효과가 없었지만 프로젝트 설정을 파헤 쳤습니다.

다음 솔루션은 최소한 동적 웹 프로젝트를 사용하는 경우 나를 위해 수정했습니다.

  1. 프로젝트를 마우스 오른쪽 버튼으로 클릭 한 다음 속성을 클릭합니다. (또는 프로젝트에 alt-enter)
  2. 배포 어셈블리에서 "src"를 제거합니다.

src / main / java를 추가 할 수 있어야합니다. 또한 자동으로 배포 어셈블리에 추가합니다.

주의 사항 : src / test / java를 추가 한 경우 배포 어셈블리에도 추가됩니다. 일반적으로 이것은 필요하지 않습니다. 제거 할 수 있습니다.


1

이로 인해 Eclipse로 결함을 수정하는 거대한 토끼 구멍이 생겼지 만 Eclipse에서 프로젝트를 삭제하고 다시 가져 와서 수정했습니다.


0

Eclipse 컴파일러가 제대로 작동하려면 소스 경로에서 final / src를 제거하고 대신 final / src / main / java를 추가해야합니다. 이제 빌드 디렉토리가 Java 소스 폴더 내에 있지 않으므로 문제를 해결할 수도 있습니다.


0

STS IDE

"소스 폴더로 사용"을 지시하는 폴더에 따라 다릅니다. 그림의 구조에서 "target"또는 "generated"폴더에 말하면 "중첩"오류가 발생합니다. 그러나 pom.xml의 'plugin'섹션에 언급 된 마지막 "cxf"폴더와 패키지 구조에서 시작되는 위치 (.wsdl 파일에 표시됨), 즉- '소스'를 수행 할 올바른 폴더 , 그러면 오류가 없습니다.


0

비슷한 문제가 있습니다. 단계를 따랐으며 문제가 해결되었습니다.

  1. Eclipse에서 프로젝트를 제거하십시오.
  2. .Project 파일 및. 설정 폴더.
  3. Eclipse를 다시 기존 maven 프로젝트로 가져옵니다.

-3

두 개의 폴더를 만듭니다 : final/src/소스 Java 코드를 저장하고 final/WebRoot/.

소스와 웹 루트를 함께 사용할 수 없습니다. 선생님을 오해 할 수 있다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.