sbt에서 실행하려고 할 때 스칼라 프로젝트에서 기괴한 동작이 발생합니다.스칼라 정규 표현식을 사용하는 java.lang.NullPointerException
java.lang.NullPointerException이를 throw 선은 이것이다 :
그것은 내부id <- urlReg.findFirstIn(line).map(_.split("/").lift(3))
A의-이해 :
for {
line <- Source.fromFile(fileName).getLines()
id <- urlReg.findFirstIn(line).map(_.split("/").lift(3))
dateString <- dateReg.findFirstMatchIn(line).map(_.group(1))
} yield {...}
나는 스칼라 콘솔에서이 라인을 테스트, I findFirstIn
은 Option[String]
을 반환하므로 None
또는 Some[String]
을 반환하고 결코 java.lang.NullPointerException
을 던져서는 안됩니다.
이 코드는 예외를 throw하지 않고 잠시 실행 한 다음 예외를 throw하기 시작했습니다.
URLREG 입력의 샘플 라인 내 설정에서 일부 호환성이 기대
val sampleLine = """10.10.6.90 - - 15/Aug/2016:23:59:20 -0500 "GET /ecf8427e/b443dc7f/71f28176/174ef735/1dd4d421 HTTP/1.0" 200 - "-" "-" 7 "10.10.1.231, 10.10.6.90" -"""
입니다 val urlReg = "[GET,POST,DELETE,PUT]\\s{1}[\\w/]+".r
입니다. 나는 달리고있다 :
- MacOS 시에라 10.12.1.
- SBT 0.13.13
- 스칼라 2.12.1
- 자바 1.8.0_112
'.findFirstIn (line)'이'Some (null)'을 반환하면'_.split ("/")'는 NPE를 던질 수 있습니다. 어쩌면 그것이 문제일까요? – marstran
'id <- urlReg.findFirstIn (line)'을 실행하는'split' 호출없이 시도했습니다. 나는 똑같은 오류가있다. –
입력 내용을 확인하십시오. urlReg이란 무엇입니까? – marstran