diff --git a/java/dependencies.bzl b/java/dependencies.bzl
index d0178ba0f8f4..7c716166d399 100644
--- a/java/dependencies.bzl
+++ b/java/dependencies.bzl
@@ -11,7 +11,7 @@ def gen_java_deps():
"com.sun.xml.bind:jaxb-impl:2.3.0",
"com.typesafe:config:1.3.2",
"commons-io:commons-io:2.5",
- "de.ruedigermoeller:fst:2.47",
+ "de.ruedigermoeller:fst:2.57",
"javax.xml.bind:jaxb-api:2.3.0",
"org.apache.commons:commons-lang3:3.4",
"org.ow2.asm:asm:6.0",
diff --git a/java/runtime/pom.xml b/java/runtime/pom.xml
index 1ce51971c03e..c75e2eeef13f 100644
--- a/java/runtime/pom.xml
+++ b/java/runtime/pom.xml
@@ -54,7 +54,7 @@
de.ruedigermoeller
fst
- 2.47
+ 2.57
org.apache.commons
diff --git a/java/runtime/src/main/java/org/ray/runtime/RayPyActorImpl.java b/java/runtime/src/main/java/org/ray/runtime/RayPyActorImpl.java
index 2938478d22e8..f1f26d40874e 100644
--- a/java/runtime/src/main/java/org/ray/runtime/RayPyActorImpl.java
+++ b/java/runtime/src/main/java/org/ray/runtime/RayPyActorImpl.java
@@ -20,7 +20,9 @@ public class RayPyActorImpl extends RayActorImpl implements RayPyActor {
*/
private String className;
- private RayPyActorImpl() {}
+ // Note that this empty constructor must be public
+ // since it'll be needed when deserializing.
+ public RayPyActorImpl() {}
public RayPyActorImpl(UniqueId id, String moduleName, String className) {
super(id);
diff --git a/java/test/src/main/java/org/ray/api/test/RaySerializerTest.java b/java/test/src/main/java/org/ray/api/test/RaySerializerTest.java
new file mode 100644
index 000000000000..33283abc7a36
--- /dev/null
+++ b/java/test/src/main/java/org/ray/api/test/RaySerializerTest.java
@@ -0,0 +1,23 @@
+package org.ray.api.test;
+
+import org.ray.api.RayPyActor;
+import org.ray.api.id.UniqueId;
+import org.ray.runtime.RayPyActorImpl;
+import org.ray.runtime.util.Serializer;
+import org.testng.Assert;
+import org.testng.annotations.Test;
+
+public class RaySerializerTest {
+
+ @Test
+ public void testSerializePyActor() {
+ final UniqueId pyActorId = UniqueId.randomId();
+ RayPyActor pyActor = new RayPyActorImpl(pyActorId, "test", "RaySerializerTest");
+ byte[] bytes = Serializer.encode(pyActor);
+ RayPyActor result = Serializer.decode(bytes);
+ Assert.assertEquals(result.getId(), pyActorId);
+ Assert.assertEquals(result.getModuleName(), "test");
+ Assert.assertEquals(result.getClassName(), "RaySerializerTest");
+ }
+
+}