0

我正在尝试使用 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

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

4

1 回答 1

0

java我认为问题在于,当您再次使用该-cp选项运行程序时,您需要包含 Jinterface 库。考虑编写一个 shell 脚本或批处理文件来处理启动所有内容。

我还建议使用 Maven 或 Gradle 之类的构建系统来管理 Jinterface 之类的依赖项并处理构建 Java 程序。

于 2017-06-30T16:22:49.953 回答