Соединение Java с Erlang с помощью JInterface

Я пытаюсь подключиться к узлу erlang с помощью Java, но получаю ошибку. Для запуска 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

Пожалуйста, кто-нибудь может дать мне решение моей проблемы.

1 ответ

Я считаю, что проблема заключается в том, что вам нужно включить библиотеки Jinterface при запуске java запустить вашу программу с -cp вариант снова. Попробуйте написать сценарий оболочки или командный файл для запуска всего.

Я также рекомендовал бы использовать систему сборки, такую ​​как Maven или Gradle, для управления зависимостями, такими как Jinterface, и для управления сборкой Java-программы.

Другие вопросы по тегам