使用JavaRMI返回字符串
最近我又开始使用Java,但我对RMI很感兴趣。我已经设法使它与一个无效函数一起工作,但它似乎无法通过网络返回字符串 有人知道我做错了什么吗 Main.java:使用JavaRMI返回字符串,java,rmi,Java,Rmi,最近我又开始使用Java,但我对RMI很感兴趣。我已经设法使它与一个无效函数一起工作,但它似乎无法通过网络返回字符串 有人知道我做错了什么吗 Main.java: package RMI; import java.rmi.RemoteException; import java.rmi.server.UnicastRemoteObject; import java.util.Random; public class Main extends UnicastRemoteObject imple
package RMI;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.Random;
public class Main extends UnicastRemoteObject implements Main_Interface {
private Random random;
private boolean coin = false;
public Main() throws RemoteException { ; }
public String flipCoin() throws RemoteException {
coin = random.nextBoolean();
if(coin) {
System.out.println("Throwing Head");
return "Head";
} else {
System.out.println("Throwing Tail");
return "Tail";
}
}
public void test() throws RemoteException {
System.out.println("Test succesful");
}
}
Main_Interface.java:
package RMI;
import java.rmi.Remote;
import java.rmi.RemoteException;
public interface Main_Interface extends Remote {
String flipCoin() throws RemoteException;
void test() throws RemoteException;
}
java(从不重要的代码中删除):
正如您可能猜到的,test()函数将完美地执行,但flipCoin()函数将抛出exection 到底引发了什么样的异常
如果是NullPointerException:在
Main
类中从未初始化random
。放入类似于random=newrandom()的内容代码>在构造函数中感谢您的回答!它确实抛出了一个NullPointerException,如果我将函数改为简单地返回“test”代码>它可以工作。愚蠢的错误。。。
package Client;
import RMI.Main_Interface;
import java.io.*;
import java.net.InetAddress;
import java.rmi.Naming;
import java.rmi.registry.LocateRegistry;
import java.rmi.registry.Registry;
public class Client {
public static void main(String[] args) {
String line = null;
boolean coin = false;
Main_Interface conn = null;
try {
String location = InetAddress.getLocalHost().getHostName();
Registry myRegistry = LocateRegistry.getRegistry(location, 1099);
conn = (Main_Interface) myRegistry.lookup("ISA");
//conn = (Main_Interface) Naming.lookup("ISA");
} catch (Exception e) {
System.out.println("Server could not be found at "+location);
System.exit(0);
}
try {
conn.test()
System.out.println("Here");
if(conn.flipCoin().equals("Head")){
System.out.println("Succes");
}
System.out.println("Here");
if(coin) {
System.out.println("Throwed Head");
} else {
System.out.println("Throwed Tail");
}
} catch (Exception e) {
System.out.println("Could not execute the command...");
}
}
}