serialization issue using scala shell

45 views
Skip to first unread message

dogod

unread,
Sep 5, 2012, 3:07:02 PM9/5/12
to scala...@googlegroups.com
When I run my scala code using scala shell with serialization, it always has serialization exception.
But when I run the code using sbt, it is ok.
I have tried both akka (java-serialization) and kryo (java -serialization).
I think it probably related to the scala shell only.
Is there any work-around solution?


For example, when I run below (pub-sub in action) program in

All the visible configuration such as Java_opts, scala_opts etc, classpath are the same.
--------------------------- scala shell
#!/bin/sh
#exec scala "$0" "$@"
export LD_LIBRARY_PATH=/usr/local/lib

LIB_PATH_OPTS="-Djava.library.path=/usr/local/lib"
#ZMQ_CLASSPATH=/usr/local/share/java/zmq.jar

AKKA_CLASSPATH=/etc/akka/lib/akka/*
LOG_CLASSPATH=/etc/scala/lib/slf4j/*:/etc/scala/lib/logback/*
CLASSPATH=$LOG_CLASSPATH:$AKKA_CLASSPATH
#echo $CLASSPATH
GC_OPTS="-Xmx256m -Xms128m -XX:+UseConcMarkSweepGC -XX:CMSInitiatingOccupancyFraction=55 -XX:+UseCMSInitiatingOccupancyOnly -XX:+CMSParallelRemarkEnabled -XX:+UseParNewGC -XX:NewRatio=4 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+DisableExplicitGC "
PROF_OPTS="-J-agentlib:hprof=cpu=samples,heap=all"
PROF_OPTS=""
SCALA_OPTS="-Yrepl-sync -P:continuations:enable"
export JAVA_OPTS=$GC_OPTS
#exec java -cp $CLASSPATH scala.tools.nsc.MainGenericRunner "$0" "$@"
exec scala ${PROF_OPTS} ${SCALA_OPTS} -classpath $CLASSPATH -savecompiled "$0" "$@"

------------------------------
For example, here is the error message when I use akka.

[ERROR] [09/05/2012 13:59:06.991] [ZeroSystem-akka.actor.default-dispatcher-3] [akka://ZeroSystem/user/health] Main$$anon$1
java.io.NotSerializableException: Main$$anon$1
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1173)
        at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1526)
        at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1491)
        at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1409)
        at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1167)
        at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:343)
        at akka.serialization.JavaSerializer$$anonfun$toBinary$1.apply$mcV$sp(Serializer.scala:114)
        at akka.serialization.JavaSerializer$$anonfun$toBinary$1.apply(Serializer.scala:114)
        at akka.serialization.JavaSerializer$$anonfun$toBinary$1.apply(Serializer.scala:114)
        at scala.util.DynamicVariable.withValue(DynamicVariable.scala:57)
        at akka.serialization.JavaSerializer.toBinary(Serializer.scala:114)
        at akka.serialization.Serialization.serialize(Serialization.scala:62)
        at Main$$anon$1$HealthProbe$$anonfun$receive$5.apply(akka.sh:383)
        at Main$$anon$1$HealthProbe$$anonfun$receive$5.apply(akka.sh:377)
        at akka.actor.Actor$class.apply(Actor.scala:318)
        at Main$$anon$1$HealthProbe.apply(akka.sh:360)
        at akka.actor.ActorCell.invoke(ActorCell.scala:626)
        at akka.dispatch.Mailbox.processMailbox(Mailbox.scala:197)
        at akka.dispatch.Mailbox.run(Mailbox.scala:179)
        at akka.dispatch.ForkJoinExecutorConfigurator$MailboxExecutionTask.exec(AbstractDispatcher.scala:516)
        at akka.jsr166y.ForkJoinTask.doExec(ForkJoinTask.java:259)
        at akka.jsr166y.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:975)
        at akka.jsr166y.ForkJoinPool.runWorker(ForkJoinPool.java:1479)
        at akka.jsr166y.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:104)

Reply all
Reply to author
Forward
0 new messages