Java EE 웹 프로젝트를 개발 중입니다. 종속성을 추가하려고하면이 오류 메시지가 나타납니다. Eclipse Kepler를 사용합니다.
"Maven 프로젝트 업데이트"중에 내부 오류가 발생했습니다. java.lang.NullPointerException
당신이 나를 도울 수? 감사합니다.
Java EE 웹 프로젝트를 개발 중입니다. 종속성을 추가하려고하면이 오류 메시지가 나타납니다. Eclipse Kepler를 사용합니다.
"Maven 프로젝트 업데이트"중에 내부 오류가 발생했습니다. java.lang.NullPointerException
당신이 나를 도울 수? 감사합니다.
답변:
프로젝트에서 .settings
폴더와 .project
파일 을 삭제 한 다음 프로젝트를 다시 가져 와서 문제를 해결 했습니다.
나를 위해 Maneesh Godbole 사용자가 CodeRanch 에서 찾은 답변을 작업했습니다 .
- 일식을 닫습니다.
- "workspace"폴더로 이동합니다.
- 숨겨진 파일을보기위한 OS 설정이 켜져 있는지 확인하십시오.
- .metadata 디렉터리 식별 및 삭제
- 이클립스 다시 시작
- 프로젝트 가져 오기
내 모듈 중 하나에서 동일한 문제가 발생했습니다.
콘솔 / cmd에서 "mvn eclipse : eclipse"를 실행하면 문제가 해결되었습니다.
이 문제의 pom.xml
경우 m2e 특정 라이프 사이클 매핑 구성이
<pluginManagement>
<plugins>
<plugin>
<groupId>org.eclipse.m2e</groupId>
<artifactId>lifecycle-mapping</artifactId>
<version>1.0.0</version>
<configuration>
<lifecycleMappingMetadata>
...
가지고 있지 않았다 <version>1.0.0</version>
부품 . Maven-> Update Project ...를 수행 할 때 스택 추적없이보고 된 NullPointerException이 발생합니다. 새로운 Import ...-> Existing Maven Projects를 사용할 때 동일한 예외가 발생했지만 스택 추적으로 위의 내용을 찾을 수있었습니다.
(Eclipse Luna Service Release 2 (4.4.2)의 m2e 1.6.1.20150625-2338에 있습니다.)
org.eclipse.m2e.core.prefs 파일은 .settings 폴더에 있습니다. 당신이 문제에 직면하면
An internal error occurred during: "Updating Maven Project". java.lang.NullPointerException
Eclipse에서 프로젝트를 삭제 한 다음 프로젝트에서 .settings 폴더 및 .project 파일 을 삭제 하여 프로젝트를 다시 가져온 다음 프로젝트를 다시 가져 오십시오.
로컬 Maven 저장소를 삭제하면 도움이되었습니다.
Eclipse에는 오류 로그가 있습니다. 전체 스택 추적이 표시됩니다. 제 경우에는 잘못된 jar 파일이 java.util.zip libs와 결합되어 적절한 예외가 발생하지 않고 NullPointerException이 발생하여 발생한 것 같습니다.
제 경우의 근본 문제는 .settings 폴더의 파일 충돌이었습니다. 따라서 .settings 폴더를 삭제하면 Maven 오류가 해결되었지만 일부 로컬 구성 파일을 유지하고 싶었습니다. 충돌을 해결 한 다음 Maven 업데이트를 다시 시도했고 작동했습니다.
나는 똑같은 문제가 있었다 ... 결국 해결책!
여기 이클립스 로그 :
java.lang.NullPointerException
at com.google.appengine.eclipse.wtp.maven.GaeRuntimeManager.getGaeRuntime(GaeRuntimeManager.java:85)
at com.google.appengine.eclipse.wtp.maven.GaeRuntimeManager.ensureGaeRuntimeWithSdk(GaeRuntimeManager.java:55)
at com.google.appengine.eclipse.wtp.maven.GaeFacetManager.addGaeFacet(GaeFacetManager.java:59)
at com.google.appengine.eclipse.wtp.maven.GaeProjectConfigurator.configure(GaeProjectConfigurator.java:46)
... GAE 런타임 유형을 가져 오려고 시도하는 "appengine maven wtp 플러그인"에서 나왔지만 여기서는 null 인 것 같습니다 (... getRuntimeType ()-> NPE) :
com.google.appengine.eclipse.wtp.maven / GaeRuntimeManager.java 클래스 참조
private static IRuntime getGaeRuntime(String sdkVersion) {
IRuntime[] runtimes = ServerCore.getRuntimes();
for (IRuntime runtime : runtimes) {
if (runtime != null && **runtime.getRuntimeType()**.equals(GAE_RUNTIME_TYPE)) {
따라서 Eclipse를 체크인하면 Google App Engine이 표시되지만 선택하면 연결된 SDK가 없음을 알 수 있습니다.
해결책 : 스크린 샷에 빨간색으로 표시 ;-)
나는 이와 동일한 증상을 겪었고 위의 해결책 중 어느 것도 도움이되지 않았습니다. 마지막으로 ear 프로젝트를 eclipse로 다시 가져 와서 문제의 스택 추적을 얻었으며 "라는 Windows의 임시 디렉토리에서 디렉토리를 삭제하려는 org.eclipse.m2e.wtp.MavenDeploymentDescriptorManagement까지 추적 할 수있었습니다. .mavenDeploymentDescriptorManagement "로 인해 java.io.File.exists () 메서드에서 비합리적인 NullPointerException이 발생했습니다. 특히 코드가 동일한 변수를 사용하여 이전 메서드에서 동일한 작업을 이미 성공적으로 수행 한 후 다음없이 file.isFile ()을 호출했기 때문입니다. 문제.
파일 시스템에서이 파일을 확인한 결과 파일은 관리자 권한으로 만 액세스 할 수 있습니다. 분명히 나는 실수로 관리자 콘솔에서 eclipse를 시작했습니다. 결국 Windows 탐색기에 숨겨진 파일을 표시하고 임시 파일을 수동으로 삭제하여 문제를 해결했습니다.
문제의 또 다른 가능한 원인입니다!
내 경우에는 다음 resource
블록이 원인 이라는 것을 알았 습니다.
<project>
<build>
<resources>
<resource>
<directory>${basedir}/../some-folder</directory>
<targetPath>outputFolder</targetPath>
</resource>
<resources>
</build>
</project>
여기에는 프로젝트 폴더의 폴더가 포함되어 있습니다 ( eclipse 프로젝트 는 버전이 지정된 프로젝트 폴더 의 하위 폴더 임).
제 경우에는 블록을 제거하고 Build helper Maven 플러그인에 대한 호출로 대체하여 오류를 제거 할 수 있습니다.
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>build-helper-maven-plugin</artifactId>
<version>1.9.1</version>
<executions>
<execution>
<id>my-own-very-cool-id-for-this-step</id>
<phase>generate-resources</phase>
<goals>
<goal>add-resource</goal>
</goals>
<configuration>
<resources>
<resource>
<directory>${basedir}/../some-folder</directory>
<targetPath>outputFolder</targetPath>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
제 경우에는 문제가 다른 종속성에서 사용 된 파생 종속성의 충돌이었고 일부 파생 종속성 버전을 사용할 수 없었습니다. 다른 환경으로의 모든 것이 갑자기 중단되었습니다. 또한 버전 범위로 작업했습니다.
maven은 나 에게이 오류를 제공했습니다.
MyProject : MyProject : jar : 1.0.0 프로젝트에 대한 종속성을 해결할 수 없음 : Dependency-A : 1.0.1-> Dependency-B : 1.1.0-> Dependency-C : 1.0.0 , Dependency- 간의 버전 충돌을 해결할 수 없습니다 . X : 1.0.1-> Dependency-Y : 1.1.0-> Dependency-C : 1.0.0 , Dependency-I : 1.0.1-> Dependency-J : 1.1.0-> Dependency-C : 1.0.0
나는 위의 모든 것을 시도했지만 아무것도 작동하지 않았으므로 ...
해결책 : 모든 종속성에서 LATEST를 버전으로 사용하므로 maven은 범위의 모든 종속성을 해결할 필요가 없습니다. 종속성 중 하나를 배포하지 못하면 빌드가 실패하기 때문에 신중하게 사용해야합니다.
자신의 종속성으로 작업하는 경우에만 LATEST를 사용하는 것이 좋습니다. 그렇지 않으면 타사 향후 버전에서 일부 컴파일 또는 런타임 오류를 찾을 수 있습니다.
위의 솔루션은 열린 JDK 13 버전 https://github.com/spotify/dockerfile-maven/issues/163 의 문제로 저에게 적합하지 않았 으므로 JDK8을 열도록 저하되었으며 저에게 효과적입니다.