เกิดข้อผิดพลาดภายในระหว่าง:“ กำลังอัปเดตโครงการ Maven” java.lang.NullPointerException


91

ฉันกำลังพัฒนาโปรเจ็กต์เว็บ Java EE เมื่อฉันพยายามเพิ่มการอ้างอิงข้อความแสดงข้อผิดพลาดนี้จะปรากฏขึ้น ฉันใช้ Eclipse Kepler

เกิดข้อผิดพลาดภายในระหว่าง: "กำลังอัปเดต Maven Project" java.lang.NullPointerException

คุณช่วยฉันได้ไหม ขอขอบคุณ.

ใส่คำอธิบายภาพที่นี่


1
คุณใช้ eclipse หรือไม่? คุณสามารถโพสต์การติดตามสแต็กทั้งหมดได้หรือไม่ คุณสามารถค้นหาได้ในมุมมอง "บันทึกข้อผิดพลาด"
Pablo Lascano

ล้าง. metadata ของคุณในโฟลเดอร์พื้นที่ทำงานสามารถแก้ปัญหานี้ได้ แต่คุณสูญเสียการกำหนดค่าของพื้นที่ทำงานของคุณ = (
Fernando Gomes

คำตอบ:


157

ฉันแก้ไขของฉันโดยการลบ.settingsโฟลเดอร์และ.projectไฟล์ในโครงการแล้วนำเข้าโครงการอีกครั้ง


5
ฉันลองทำหลายอย่างแล้วมันเป็นโฟลเดอร์. settings ที่ทำเพื่อฉัน
simon

สิ่งนี้ช่วยได้! แต่เนื่องจากฉันใช้ Workspace Resolution เพื่อแก้ไขการอ้างอิง pom กับโปรเจ็กต์ใน Workspace เดียวกันฉันจึงต้องปิดใช้งาน Workspace Resolution จากนั้นปิดใช้งาน Maven Nature จากนั้นเปิดใช้งาน Maven ในโปรเจ็กต์อีกครั้ง
mcolley73

1
Jep ที่ใช้งานได้สำหรับฉันดูเหมือนว่ามันยังอ้างถึง Google App Engine เวอร์ชันที่ฉันไม่มีอีกแล้ว (อัปเดตแล้ว)
Dieter Hubau

ยังต้องรีสตาร์ท eclipse ก่อนที่จะนำเข้าอีกครั้ง
rakmoh

ฉันแก้ไขมันเพียงแค่ลบไฟล์. settings ทั้งหมดปิดก่อน Eclipse จากนั้นฉันดำเนินการอัปเดต maven
isma.imc

25

สำหรับฉันแล้วคำตอบที่พบใน CodeRanchโดยผู้ใช้Maneesh Godbole :

  1. ปิดคราส
  2. ไปที่โฟลเดอร์ "พื้นที่ทำงาน" ของคุณ
  3. ตรวจสอบให้แน่ใจว่าการตั้งค่าบน OS ของคุณเพื่อดูไฟล์ที่ซ่อนอยู่เปิดอยู่
  4. ระบุและลบไดเร็กทอรี. metadata
  5. รีสตาร์ท eclipse
  6. นำเข้าโครงการ

1
นี่เป็นคำตอบเดียวที่เหมาะกับฉัน รายการ. settings และ. project ถูกสร้างขึ้นใหม่เมื่อเริ่มต้นทำให้เกิดปัญหาเดียวกันจนกว่าฉันจะลบโฟลเดอร์ข้อมูลเมตา +1 & ขอบคุณ!
Mark W

@MarkW ฉันดีใจที่ช่วย :-)
Eel Lee

สำหรับฉันมันใช้งานได้ แต่ฉันต้องกำหนดค่าพื้นที่ทำงานทั้งหมดของฉันใหม่ = (
Fernando Gomes

มันลบการตั้งค่าทั้งหมดของฉันในคราส เค้าโครงมุมมองและสีสันทั้งหมดหายไป
อุมุท

6

ฉันมีปัญหาเดียวกันในโมดูลหนึ่งของฉัน

การรัน "mvn eclipse: eclipse" ในคอนโซล / cmd ช่วยแก้ปัญหาให้ฉันได้


3

ในกรณีของปัญหานี้เรามี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 ที่รายงานโดยไม่มีการติดตามสแต็ก เมื่อใช้การนำเข้าใหม่ ... -> โครงการ Maven ที่มีอยู่ข้อยกเว้นเดียวกันนี้เกิดขึ้น แต่มีการติดตามสแต็กที่ทำให้ฉันพบสิ่งที่กล่าวมาข้างต้น

(นี่คือกับ m2e 1.6.1.20150625-2338 ใน Eclipse Luna Service Release 2 (4.4.2))


1
นี่เป็นกรณีของฉัน ฉันเดาว่าปัญหาที่อธิบายมีสาเหตุหลายประการ
Aleksandr Erokhin

2

ไฟล์org.eclipse.m2e.core.prefsอยู่ในโฟลเดอร์. settings หากคุณประสบปัญหาของ

An internal error occurred during: "Updating Maven Project". java.lang.NullPointerException

ลบโครงการจากคราสแล้วโดยการลบ.settingsโฟลเดอร์และ.projectไฟล์ในโครงการ -> แล้วนำเข้าโครงการ


คำตอบนี้มีอยู่แล้วและมีผู้โหวตมากที่สุดดังนั้นฉันจึงไม่เห็นประเด็นที่จะโพสต์รายการที่ซ้ำกัน
Eel Lee

มีใครพูดถึง "org.eclipse.m2e.core.prefs" บ้างไหม ฉันหมายความว่าจะบอกว่าอะไรคือเหตุผลที่อยู่เบื้องหลังปัญหา
Jyoti Prakash

บางทีความคิดเห็นเกี่ยวกับคำตอบหลักอาจเป็นสถานที่ที่ดีที่สุดในการพูดคุยถึงสาเหตุ
J. Allen

2

ในกรณีที่มันช่วยใครได้นอกจากการลบ.settingsและ.projectฉันต้องลบ.classpathและ.factorypathก่อนที่จะสามารถอิมพอร์ตโปรเจ็กต์เข้าสู่ Eclipse ได้สำเร็จ


1

วิธีการข้างต้นไม่ได้ผลสำหรับฉัน สิ่งนี้อาจเกิดขึ้นเนื่องจากการมีอยู่ของการอ้างอิงแบบวงกลมในพื้นที่ทำงาน eclipse ของคุณ ดังนั้นหากมีข้อผิดพลาดอื่น ๆ ปรากฏในโครงการอื่น ๆ ในพื้นที่ทำงานของคุณให้ลองแก้ไขปัญหาเหล่านั้นแล้วปัญหานี้จะหมดไป นี่คือวิธีที่ฉันกำจัดข้อผิดพลาด




1

Eclipse มีบันทึกข้อผิดพลาด คุณจะเห็นการติดตามสแต็กที่สมบูรณ์ ในกรณีของฉันดูเหมือนว่าจะเกิดจากไฟล์ jar ที่ไม่ดีรวมกับ libs java.util.zip ไม่ได้มีข้อยกเว้นที่เหมาะสมเพียงแค่ NullPointerException


ในกรณีของสถานการณ์นี้ถูกเรียกโดยคู่ของไห Javadoc จากซีลีเนียมเช่น, repo1.maven.org/maven2/org/seleniumhq/selenium/selenium-java/... ในซอร์สสำหรับ Eclipse m2e ที่git.eclipse.org/c/m2e/m2e-core.git/tree/org.eclipse.m2e.jdt/src/…คุณจะเห็นว่าเมธอด getJavaDocPathInArchive ไม่คาดหวัง a NullPointerException จาก en.nextElement ()
Jeremy K

เห็นได้ชัดว่า "NullPointerException" จากการแจกแจงไฟล์ ZIP นั้นได้รับการแก้ไขใน Java 9 ( bugs.openjdk.java.net/browse/JDK-8048990 )
Jeremy K

1

ฉันกำลังใช้:

Eclipse Java EE IDE สำหรับนักพัฒนาเว็บ

เวอร์ชัน: Neon.3 Release (4.6.3) Build id: 20170314-1500

การแก้ไข / เคล็ดลับสำหรับฉันคือการลบที่เก็บในเครื่องของฉันใน ~ / .m2 / repository เพื่อลบการอ้างอิงในเครื่องและสร้างโครงการของฉันใหม่ซึ่งการอ้างอิงใหม่จะถูกดึงลง


0

ผมมีปัญหาเดียวกัน. ไม่มีวิธีแก้ปัญหาใดที่ได้ผล ฉันต้องติดตั้งคราสใหม่ทั้งหมดและสร้างพื้นที่ทำงานใหม่ แล้วมันได้ผล!


0

ฉันมีปัญหาเดียวกันนี้ในหลายโครงการและหลายพื้นที่ทำงานไม่มีวิธีแก้ปัญหาใดที่พบทางออนไลน์สำหรับฉัน ฉันใช้ STS และสิ่งเดียวที่ได้ผลคือเข้าไปในไดเรกทอรี STS ของฉันและเพิ่ม "-clean" ที่ด้านบนของไฟล์ STS.ini จากนั้นคุณสามารถเริ่มต้นพื้นที่ทำงานของคุณและเรียกใช้ maven clean โดยไม่มีข้อผิดพลาด (คุณยังสามารถลบแท็ก -clean ออกจากไฟล์ ini เพื่อที่จะไม่ล้างทุกครั้งที่คุณเริ่ม)

หวังว่านี่จะช่วยใครบางคนได้


0

ปัญหาหลักในกรณีของฉันคือความขัดแย้งของไฟล์ในโฟลเดอร์. settings ดังนั้นการลบโฟลเดอร์. settings จะช่วยแก้ไขข้อผิดพลาด Maven ได้ แต่ฉันต้องการเก็บไฟล์คอนฟิกูเรชันในเครื่องของฉันไว้ ฉันแก้ไขข้อขัดแย้งแล้วลองอัปเดต Maven อีกครั้งและใช้งานได้


0

ฉันมีปัญหาเดียวกัน ... วิธีแก้ปัญหาในตอนท้าย!

ที่นี่บันทึกคราส:

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)

... มันมาจาก "appengine maven wtp plugin" ที่พยายามรับประเภทของรันไทม์ GAE แต่ดูเหมือนจะเป็นโมฆะที่นี่ (... 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 ... การกำหนดลักษณะ / เซิร์ฟเวอร์ / สภาพแวดล้อมรันไทม์

วิธีแก้ไข: เป็น สีแดงบนภาพหน้าจอ ;-)


0

ฉันพบอาการเดียวกันนี้และไม่มีวิธีแก้ไขใด ๆ ข้างต้นที่เป็นประโยชน์ ในที่สุดฉันก็ได้รับการติดตามสแต็กของปัญหาโดยการนำเข้า ear project อีกครั้งเพื่อคราสและสามารถติดตามสิ่งนี้ลงไปที่ org.eclipse.m2e.wtp.MavenDeploymentDescriptorManagement ซึ่งพยายามลบไดเร็กทอรีในไดเร็กทอรี temp ของ windows ที่เรียกว่า " .mavenDeploymentDescriptorManagement "ซึ่งทำให้เกิด NullPointerException ที่ไม่ลงตัวจากเมธอด java.io.File.exists () โดยเฉพาะอย่างยิ่งเนื่องจากโค้ดได้ทำสิ่งเดียวกันสำเร็จแล้วในเมธอดก่อนหน้าด้วยตัวแปรเดียวกันจากนั้นเรียกว่า file.isFile () โดยไม่มี ปัญหา.

การตรวจสอบสิ่งนี้ในระบบไฟล์พบว่าไฟล์สามารถเข้าถึงได้ด้วยสิทธิ์ของผู้ดูแลระบบเท่านั้น เห็นได้ชัดว่าในบางจุดฉันได้เปิด eclipse จากคอนโซลผู้ดูแลระบบโดยไม่ได้ตั้งใจ ในที่สุดฉันก็ทำให้ไฟล์ที่ซ่อนอยู่มองเห็นได้ใน windows explorer และลบไฟล์ชั่วคราวด้วยตนเองซึ่งช่วยแก้ปัญหาได้


0

เป็นอีกแหล่งที่มาของปัญหา!

ฉันพบว่าในกรณีของฉันมันเป็น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>

0

ฉันต้องติดตั้ง eclipse ใหม่ลบโฟลเดอร์. m2 และสร้างไหใหม่


0

ในกรณีของฉันปัญหาคือความขัดแย้งของการอ้างอิงที่ได้รับซึ่งถูกใช้โดยการอ้างอิงอื่น ๆ และเวอร์ชันการอ้างอิงที่ได้รับบางส่วนไม่พร้อมใช้งานอาจเป็นเพราะการปรับใช้บางอย่างที่ฉันลืมทำเพราะด้วยความละเอียดของพื้นที่ทำงานทุกอย่างทำงานได้ แต่เมื่อย้าย ไปสู่สภาพแวดล้อมอื่น ๆ ทั้งหมดก็พังทันที และฉันกำลังทำงานกับช่วงเวอร์ชันด้วย

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

ฉันลองทั้งหมดข้างต้นแล้วและไม่มีอะไรได้ผลดังนั้น ...

วิธีแก้ปัญหา: ใช้รุ่นล่าสุดเป็นเวอร์ชันในการอ้างอิงทั้งหมดดังนั้น maven จึงไม่จำเป็นต้องแก้ไขการอ้างอิงทั้งหมดในช่วงซึ่งจะต้องใช้ด้วยความระมัดระวังเพราะหากคุณพลาดที่จะปรับใช้การอ้างอิงอย่างใดอย่างหนึ่งการสร้างจะล้มเหลว

เฉพาะฉันขอแนะนำให้คุณใช้ LATEST หากคุณกำลังทำงานกับการอ้างอิงของคุณเองมิฉะนั้นในเวอร์ชันอนาคตของบุคคลที่สามคุณอาจพบข้อผิดพลาดในการคอมไพล์หรือรันไทม์


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.