我不知道为什么,但我收到了这个错误:
java.rmi.ConnectException: Connection refused to host: 127.0.1.1; nested exception is:
java.net.ConnectException: Connexion refusée
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:619)
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:216)
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:202)
at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:130)
at java.rmi.server.RemoteObjectInvocationHandler.invokeRemoteMethod(RemoteObjectInvocationHandler.java:227)
at java.rmi.server.RemoteObjectInvocationHandler.invoke(RemoteObjectInvocationHandler.java:179)
at com.sun.proxy.$Proxy0.getNbMots(Unknown Source)
at tp1.Serveur.main(Serveur.java:15)
Caused by: java.net.ConnectException: Connexion refusée
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
at java.net.Socket.connect(Socket.java:589)
at java.net.Socket.connect(Socket.java:538)
at java.net.Socket.<init>(Socket.java:434)
at java.net.Socket.<init>(Socket.java:211)
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:40)
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:148)
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:613)
... 7 more
使用此代码:
public static void main(String[] argv) {
try {
// if (System.getSecurityManager() == null) { System.setSecurityManager(new SecurityManager()); }
// 1099 est le port sur lequel sera publié le service, il s'agit du port par défaut de RMI. Nous devons le préciser à la fois sur le registry et à la fois à la création du stub.
LectFichierInt skeleton = (LectFichierInt) UnicastRemoteObject.exportObject(new LectFichierImpl(), 1099); // Génère un stub vers notre service qui pourra être accessible via le port précisé. L’implémentation du service étant CalcImpl
Registry registry = LocateRegistry.createRegistry(Parametres.PORT); //Crée un registre
registry.rebind("LectFichier", skeleton); // publie notre stub sous le nom "Calc« dans le registre précédemment créé
System.out.println(skeleton.getNbMots(1, 3000) + " yolooo ");
} catch (Exception e) {
e.printStackTrace();
}
}
我使用端口2015,我已经制作了sudo iptables -A INPUT -p tcp -i eth0 --dport 2015 -j ACCEPT
。
另一个小错误,如果我没有写System.out.println(...);
程序启动和停止而不显示错误。
答案 0 :(得分:0)
所以有解决方案。问题是:“未知”为什么?我不知道:D
好吧,你只需要在类中进行LectFichierInt骨架的静态声明。喜欢:
public class Yolo {
static LectFichierInt skeleton; // or stub don't cry :P
public static void main(String[] argv) {
try {
skeleton = (LectFichierInt) UnicastRemoteObject.exportObject(new LectFichierImpl(), 1099);
Registry registry = LocateRegistry.createRegistry(Parametres.PORT);
registry.rebind("LectFichier", skeleton);
} catch (Exception e) {
e.printStackTrace();
}
}
}
享受,现在如果您遇到同样的问题,请尝试修复该错误;)