When using Scala RemoteActors I was getting a ClassNotFoundException that referred to scala.actors.remote.NetKernel. I copied someone else's example and added RemoteActor.classLoader = getClass.getClassLoader to my Actor and now everything works. Why is this necessary?
Why is setting the classloader necessary with Scala RemoteActors?
1.2k Views Asked by Craig P. Motlin At
1
There are 1 best solutions below
Related Questions in SERIALIZATION
- Saving FileSystemInfo Array to File
- Serializing to disk and deserializing Scala objects using Pickling
- Serializing TypeInfo / Type across .Net Platforms
- How can I send multiple objects over one socket in java?
- Non-intruisive Boost serialization of labelled enums C++
- While Conditions for Deserializing Multiple Objects in Java
- Xml serializing and deserializing with memory stream
- How do I Serialize a JMS Message?
- Serializable class with ISerializable constructor
- Serializing a struct whose definition is not known
- XML Deserializing lists with objects only getting one level
- Using active model serializers for json and csv in Rails?
- Why does Java serialization take up so much space?
- Using Gson to serialize strings with \n in them
- How to covert JSON field name to a Java compatible property name while doing Jackson de-serialisation?
Related Questions in SCALA
- Spark .mapValues setup with multiple values
- Where do 'normal' println go in a scala jar, under Spark
- Serializing to disk and deserializing Scala objects using Pickling
- Where has "Show Type Info on Mouse Motion" gone in Intellij 14
- AbstractMethodError when mixing in trait nested in object - only when compiled and imported
- Scala POJO Aggregator Exception
- How to read in numbers from n lines into a Scala list?
- Spark pairRDD not working
- Scala Eclipse IDE compiler giving errors until "clean" is run
- How to port Slick 2.1 plain SQL queries to Slick 3.0
- Log of dependency does not show
- Getting unary error for escaped characters in Scala
- Akka actor invoked with a function delegate - is this bad practice?
- Json implicit format with recursive class definition
- How to create a executable jar reading files from local file system
Related Questions in CLASSLOADER
- Get full path of a package situated in source folder from junit
- ClassLoader: Treating a class as a resource - safe or implementation detail?
- Eclipse/Java can't start any project
- Can java string literals be garbage collected?. If Yes, how to prove it?
- Java override class to Load project Class instead Jar class
- Javamail ClassCastException when sending multipart messages
- How to use PowerMock with Arquillian?
- How do I install a servlet in a tomcat container and have it loaded into each web app's context?
- How do I print the current classpath for a Jenkins plugin?
- UrlClassLoader scope
- The autoloader expected class tobe defined in file
- ClassNotFoundException when load class with Class.forName
- Rome 0.9 does not work correctly when module classloader order : parent last
- Confusing ClassNotFoundException when instantiating JAXBContext with packageName and Classloader
- ClassNotFoundException on android blank activity
Related Questions in REMOTE-ACTORS
- Scala server needs to manage many clients
- Akka inform remote actor on error
- Scala RemoteActor multiple network interfaces
- Actor Name is not Unique InvalidActorNameException
- Using RemoteActors without future/ask
- Why is setting the classloader necessary with Scala RemoteActors?
- Firefox 70 - remote debugging - unable to get consoleActor
- How send messages to akka system in neighbouring jvm?
- How to get the port of a remote actor when it was dynamically set?
- Is there a way to obtain the ip address of a remote actor?
- Scala remote actors on same machine
- Failure to Bind to a Remote IP Address for Akka Actor System
- How to implement authentication using remote actors?
- Akka remote actors from different networks
- Akka Actor on server not returning an ActorIdentity response to an Identify message
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
Remote Actors use Java serialization to send messages back and forth. Inside the actors library, you'll find a custom object input stream ( https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/src/actors/scala/actors/remote/JavaSerializer.scala ) that is used to serialize objects to/from a socket. There's also some routing code and other magic.
In any case, the ClassLoader used for remoting is rather important. I'd recommend looking up Java RMI if you're unfamiliar with it. In any case, the ClassLoader that Scala picks when serializing/deserializing actors is the one Located on RemoteActor which defaults to null.
This means that by default, you will be unhappy without specifying a ClassLoader ;).
If you were in an environment that controls classloaders, such as OSGi, you'd want to make sure you set this value to a classloader that has access to all classes used by all serialized actors.
Hope that helps!