2016-06-27 2 views
-4
19:45:37.624 [main] ERROR c.s.s.z.c.w.r.MP - Error while updating table:  MyFile, Error: java.lang.NullPointerException 
java.lang.NullPointerException: null 
    at java.util.Objects.requireNonNull(Unknown Source) ~[na:1.8.0_91] 
    at java.util.Arrays$ArrayList.<init>(Unknown Source) ~[na:1.8.0_91] 
    at java.util.Arrays.asList(Unknown Source) ~[na:1.8.0_91] 
    at com.sl.sy.z.MU.getLM(MU.java:367) ~[classes/:na] 
    at com.sl.sy.z.rr.MP.searchInP(MP.java:556) ~[classes/:na] 
    at com.sl.sy.z.rr.MP.processR(MP.java:166) ~[classes/:na] 
    at com.sl.sy.z.rr.RRMUpdate.processRR(RRMUpdate.java:139) [classes/:na] 
    at com.sl.sy.z.RREReader.main(RREReader.java:101) [classes/:na] 

여기 오류입니다. 이 오류가 나타나는 이유를 알려주십시오.Java 코드를 통해 XML 파일을 업데이트하는 중 오류가 발생했습니다.

+1

http://stackoverflow.com/questions/218384/what-is-a-nullpointerexception-and-how-do-i-fix-it –

+3

코드를 표시하는 것이 어렵지 만 보이지 않습니다. 'com.sl.sy.z.MU.getLM' (MU.java의 367 행)에서'Arrays.asList (null)'을 호출하는 것과 같습니다. – Krease

답변

1

이 코드는 안전 :

List<?> list = Arrays.asList(null, null); 

이 코드는, 그러나, 어떤 당신이 일을 한 것으로 나타났습니다 무엇, 안전하지는 않습니다 :

List<?> list = Arrays.asList(null); 

그 이유는 그 Arrays.asList입니다 varargs 메소드입니다. varargs의 시퀀스는 배열에 대한 대체 표기법이므로 실제 정의가 asList(T... a)이지만 그 정의는 asList(T[] a)과 거의 같습니다. 여러 개의 인수 또는 Object가 아닌 유형의 단일 인수를 전달하면 컴파일러는 Arrays 클래스의 다른 메소드가 일치 할 가능성이 없음을 알고 있으므로 여러 인수에서 배열을 암시 적으로 작성한다는 것을 알고 있습니다.

하나의 null은 유형이 없으므로 Object로만 유추 할 수 있습니다. null 객체는 배열을 포함하여 모든 유형이 될 수 있습니다. 컴파일러는 자동으로 조정 된 코드보다 명시적인 코드를 선호하며 컴파일러가 메소드 호출을 위해 배열로 지능적으로 작성해야하는 null이 아닌 널 배열을 전달하려고한다고 가정합니다.

가장 간단한 해결책은 Arrays.asList (null)을 Collections.singletonList(null)으로 바꾸는 것입니다.

0

문제를 해결해 주셔서 감사합니다. 그러나 위의 질문에 대한 답을 찾았습니다. 제 경우에는 데이터를 읽는 곳의 Excel 시트와 관련이 있습니다. 셀 데이터가 쉼표로 포함되어 있지 않기 때문에 XML에서 셀 내용을 읽는 데 할당 된 변수가 데이터로 업데이트되지 않았습니다. 반면에 값에 쉼표가 포함 된 상태에서 확인했습니다. " "

관련 문제