4
이 코드 ...Groovy에서 자체 정의 오브젝트를 직렬화하는 방법
class A implements Serializable{
String str
int n
}
try{
def a= new A(str:'abc', n:7)
def out= new ObjectOutputStream(new FileOutputStream('serializedObject.obj'))
out.writeObject(a)
out.close()
}finally{}
try{
def inp= new ObjectInputStream(new FileInputStream('serializedObject.obj'))
def a2= inp.readObject()
inp.close()
}finally{}
... 오류가 발생합니다 ...
java.lang.ClassNotFoundException: A
at java_io_ObjectInput$readObject.call(Unknown Source)
at otherRun.run(otherRun.groovy:16)
... 두 번째 try 블록에서 개체를 다시로드하려고 시도 할 때. 클래스가 java.util.List와 같은 미리 정의 된 클래스 일 때도 정상적으로 작동합니다. 위의 코드는 line-for-line을 Java으로 변환 할 때도 정상적으로 작동합니다.
Groovy에서 어떻게 작동시킬 수 있습니까?
나는 그것을 시험하지 않고 작동 할 것이라고 생각했다. 사실 그것은 Groovy에서 직렬화를 사용하는 궁극적 인 목표이다. 그러나 여러 파일, 패키지, 성능 향상 등으로 형식을 지정하기 전에 Groovy에서 단일 소스 파일을 사용하여 새로운 Java/Groovy 기능을 실험하는 것이 매우 편리합니다. ** line-for-line으로 변환 할 때 코드가 정상적으로 작동하기 때문에 Java **에 추가하면, Groovy도 Java를 활성화해야합니다. –
싱글 소스 파일이 있고 그것을 실행하면 "클래스 A"가 여러 번 컴파일 될 수 있습니다 ... 일반적으로 이름이 부 풀립니다. 이것은 또한 이상한 행동으로 이어질 수 있습니다. –