使用 JInterface 将 java 与 erlang 连接起来



我正在尝试使用 java 连接到 erlang 节点,但出现错误。为了启动 erlang,我erl -sname db -setcookie erlang使用了这个命令。

这是我的java代码:

import com.ericsson.otp.erlang.OtpConnection;
import com.ericsson.otp.erlang.OtpErlangObject;
import com.ericsson.otp.erlang.OtpPeer;
import com.ericsson.otp.erlang.OtpSelf;

public class ErlConnection {
private static OtpConnection conn;
public OtpErlangObject received;
private final String peer;
private final String cookie;
public static void main(String []args){
new ErlConnection("db","erlang");
}
public ErlConnection(String _peer, String _cookie) {
peer = _peer;
cookie = _cookie;
connect();
/*Do Calls to Rpc methods and then close the connection*/
disconnect();
}
private void connect() {
System.out.print("Please wait, connecting to "+peer+"....n");
String javaClient ="java";
try {
OtpSelf self = new OtpSelf(javaClient, cookie.trim());
OtpPeer other = new OtpPeer(peer.trim());
conn = self.connect(other);
System.out.println("Connection Established with "+peer+"n");
}
catch (Exception exp) {
System.out.println("connection error is :" + exp.toString());
exp.printStackTrace();
}
}
public void disconnect() {
System.out.println("Disconnecting....");
if(conn != null){
conn.close();
}
System.out.println("Successfuly Disconnected");
}
}

它编译得很好,但随后我收到运行时错误,我不知道这意味着什么

mirt@ubuntu:~/erlang/projekt$ javac -classpath "/usr/lib/erlang/lib/jinterface-1.6.1/priv/OtpErlang.jar:." ErlConnection.java 
mirt@ubuntu:~/erlang/projekt$ java ErlConnection
Please wait, connecting to db....
Exception in thread "main" java.lang.NoClassDefFoundError: com/ericsson/otp/erlang/OtpSelf
at ErlConnection.connect(ErlConnection.java:33)
at ErlConnection.<init>(ErlConnection.java:21)
at ErlConnection.main(ErlConnection.java:15)
Caused by: java.lang.ClassNotFoundException: com.ericsson.otp.erlang.OtpSelf
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 3 more

拜托,谁能给我一个解决问题的方法。

我相信问题是当你运行java时需要包含Jinterface库,以再次使用-cp选项运行你的程序。 考虑编写 shell 脚本或批处理文件来处理启动所有内容。

我还建议使用像Maven或Gradle这样的构建系统来管理像Jinterface这样的依赖关系,并处理Java程序的构建。

最新更新