2012-03-20 2 views
4

GroovyClassLoader을 사용하여 내장 된 그루비 스크립트를 실행하는 Java 응용 프로그램이 있습니다. Groovy 스크립트에 Java 유형을 전달하는 동안 이상한 오류가 발생할 때까지 모든 것이 잘 작동합니다.Groovy의 java.util.Date 또는 Java의 java.util.Date?

내 문제는 다음과 같습니다. java.util.Date을 매개 변수로 groovy 스크립트에 전달합니다. Groovy의 java.util.Date에는 환상적인 clearTime() 함수가 있습니다. 그러나이 함수를 호출하려고하면이 예외가 발생합니다.

groovy.lang.MissingMethodException: No signature of method: java.util.Date.clearTime() is applicable for argument types:() values: [] 

Groovy Date가 아닌 Java Date가 있기 때문에 이것을 가정합니다. 이 둘 사이의 변환 방법이 있습니까?

그루비가 jdk 유형을 오버라이드하는 것으로 보이는 방식을 완전히 이해하지 못한다는 것을 인정합니다. (너무 많이 사용하기 때문에 이것이 여기서 사용하는 정확한 용어인지는 모르겠다.) Groovy 내부에서 java.util.Date를 생성 할 때 어떤 일이 발생하는지에 대해 완전히 잘못된 것이라면 나에게 수정 해 주겠다. Java의 함수에 추가합니다.

+0

또한이 경우에는 자바 날짜를 전달하고 Joda로 전환하는 것을 고려하고 있습니다. 그러나 Groovy가 Java 유형을 전달할 때 세계에서 무엇을하는지 알고 싶습니다. 조만간 조만간이 문제를 다시 해결할 것이라고 확신합니다. –

+0

나는 이것을 대답으로 보내지 않을 것이다. 그러나 이것에 대한 해킹과 슬래시는 Java GregorianCalendar를 사용하고 set()을 사용하여 날짜를 설정 한 다음 모든 필드를 비운다. 좋아해. –

+5

이 실패 사례를 게시 할 수 있습니까? "그루비 데이트"는 없습니다. 그루비 코드를 실행하는 동안 그루비에 의해 올려지는 메타 클래스가있는 정규 날짜입니다. –

답변

0

오케이 여기에 내 오작동을 알았습니다. 내 테스트 응용 프로그램은 1.8.6 원하는대로 바뀌었지만 주 프로그램에서 1.6.5를 사용하고있었습니다 (호출하려고 시도한 함수가 1.6.7에서 도입되었습니다). Eclipse는 pom.xml을 업데이트 할 때 새 버전으로 실행하지 않기로 결정했습니다.

관련 문제