Al usar Scala RemoteActors recibí una ClassNotFoundException que hacía referencia a scala.actors.remote.NetKernel. Copié el ejemplo de otra persona y agregué RemoteActor.classLoader = getClass.getClassLoader
a mi Actor y ahora todo funciona. ¿Por qué es esto necesario?¿Por qué es necesario configurar el cargador de clases con Scala RemoteActors?
Respuesta
Los actores remotos utilizan la serialización de Java para enviar y recibir mensajes. Dentro de la biblioteca de actores, encontrará una secuencia de entrada de objeto personalizada (https://lampsvn.epfl.ch/trac/scala/browser/scala/trunk/src/actors/scala/actors/remote/JavaSerializer.scala) que se utiliza para serializar objetos a/desde un socket. También hay algún código de enrutamiento y otra magia.
En cualquier caso, el ClassLoader utilizado para la comunicación remota es bastante importante. Recomiendo buscar Java RMI si no está familiarizado con él. En cualquier caso, el ClassLoader que Scala elige al serializar/deserializar actores es el que se encuentra en RemoteActor y que por defecto es nulo.
Esto significa que, de forma predeterminada, no estará satisfecho sin especificar un ClassLoader;).
Si usted estuviera en un entorno que controla cargadores de clases, como OSGi, usted quiere asegurarse de que se establece este valor a un cargador de clases que tiene acceso a todas las clases utilizadas por todos los actores serializados.
Espero que ayude!
- 1. ¿Es posible instrumentar con clases javassist java core? Clases cargadas por el cargador de clases bootstrap
- 2. ¿Qué cargador de clases usar con Parcel.readHashMap?
- 3. ¿Qué es un cargador de clases aislado en Java?
- 4. ¿Por qué es necesario el método DataBind()?
- 5. ¿Por qué es necesario el botón guardar?
- 6. por qué necesitamos el cargador de clases definido por el usuario en java
- 7. vhost.exe. ¿Por qué es eso necesario?
- 8. ¿Por qué es necesario un segundo cin.ignore()?
- 9. ¿Por qué es necesario SSLCertificateKeyFile para Apache?
- 10. ¿Por qué session_ destroy() es necesario?
- 11. C - ¿Por qué strcpy() es necesario?
- 12. ¿Por qué es necesario cerrar File.Create?
- 13. Clasificadores de Java: ¿por qué buscar primero el cargador de clases padre?
- 14. cargadores de clases Scala confusión
- 15. Python: ¿Por qué es necesario functools.partial?
- 16. ¿Por qué no se puede descargar una clase sin descargar el cargador de clases?
- 17. ¿Por qué ya no es necesario indicar ByVal/ByRef?
- 18. Cuando es necesario usar Clases en PHP
- 19. Comportamiento del cargador de clases en Tomcat con múltiples aplicaciones
- 20. lo que es Contexto Android y por qué es necesario
- 21. Por qué el objeto creado por el cargador de clases no tienen la oportunidad de recoger la basura en sí
- 22. lanzado a través del cargador de clases?
- 23. Tutorial del cargador de clases Java
- 24. ¿Cuál es el propósito del cargador de la clase Java?
- 25. ¿Por qué Scala es muy complejo?
- 26. ¿Es necesario definir constructores de movimiento de diferentes clases?
- 27. ¿Cómo establecer mi cargador de clases personalizado como predeterminado?
- 28. ¿Escenario cuando uno puede requerir un cargador de clases personalizado?
- 29. ¿Por qué los módulos concatenados RequireJS AMD necesitan un cargador?
- 30. ¿Por qué es necesario marcar una clase como serializable?
Gracias por la respuesta completa. ¿No hay forma de que Scala elija un mejor incumplimiento que nulo? –
'null' es la plataforma predeterminada, hasta donde yo sé. En realidad, el cargador de clases 'null' hace referencia al" cargador de clases del sistema "que configura el tiempo de ejecución de Java. – soc
¿Por qué no está bien el cargador de clases del sistema? –