It was found that Tester.java did not work for hw5. As was previous problem, it is caused by the slight incompatibilities of different versions of Java SDKs. Specifically, if you follow exactly the procedures to run the skeleton program given in the description of this assignment, at the 5th step when running Sink program, youmay see the followinng output: Local Socket Port: xxxx Tester is not bound in registry Source offerer is not found at remote registry ...... The above output shows that Naming.lookup("Tester") in SinkTester.java failed when lookup the class Tester. To solve this problem, we can take the following two steps (Step 1 is used for debugging, and you can skip it): 1. add code to print exception messages for Naming.lookup(). Add the following lines of code: System.out.println("Naming.lookup() err: " + e.getMessage()); e.printStackTrace(); at Line 83 of SinkTester.java and Line 105 of SourceTester.java. Therefore, we are able to see the detailed exception messages. By following the execution procedures available in the description for this assignment, we can observe the following output: Local Socket Port: 1025 Tester is not bound in registry Naming.Lookup() err: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: Tester_Stub java.rmi.UnmarshalException: error unmarshalling return; nested exception is: java.lang.ClassNotFoundException: Tester_Stub at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) at java.rmi.Naming.lookup(Naming.java:84) at SinkTester.main(SinkTester.java:77) ...... This means that Tester_Stub.class, which is generated by the RMI compiler (when running "rmic Tester" in the first step), can not be located by SinkTester. RMI server is supposed to send the class files to the client (i.e., SinkTester), however, the class file (Tester_Stub.class) is not sent by the RMI server in this case. 2. We can take the following quick fixes to make the clients (both SinkTester and SourceTester) be able to retrieve the needed class file Tester_Stub.class: (a) copy the class files (Tester/*.class) to Sink/ and Source/ (b) set CLASSPATH environment variable for Sink and Source to guide the location of class files. For example, $ export CLASSPATH=$CLASSPATH:~/cs555/hw5/Tester:~/cs555/hw5/Sink:~/cs555/hw5/Source given that your programs are located in ~/cs555/hw5/. Note that there are other fixes which can be more complicated, which can be found in the documents of RMI and archives of Sun's RMI mailing list.