>Java >java지도 시간 >내 Java RMI 서버에서 \'java.rmi.ServerException: RemoteException\'이 발생하는 이유는 무엇입니까?

내 Java RMI 서버에서 \'java.rmi.ServerException: RemoteException\'이 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-08 13:39:11409검색

Why am I Getting a

Java.RMI.ServerException: 서버 스레드에서 RemoteException이 발생했습니다(클래스를 찾을 수 없음 예외)

코드를 사용하여 서버를 시작하려고 할 때 코드 조각이 제공되면 "java.rmi.ServerException: RemoteException이 서버 스레드에서 발생했습니다. 중첩 예외는 다음과 같습니다."라는 예외가 발생할 수 있습니다. java.rmi.UnmarshalException: 오류 정렬 해제 인수, 중첩 예외: java.lang.ClassNotFoundException: Interfaces.RemoteMethodIntf."

이 예외는 서버에서 필요한 클래스를 찾는 데 문제가 있을 때 발생합니다. 이 예외가 발생할 수 있는 네 가지 시나리오는 다음과 같습니다.

  1. 내보내기: 'rmic'을 실행하지 않거나 UnicastRemoteObject 프리앰블에서 필요한 단계를 건너뛰면 이 예외가 발생할 수 있습니다.
  2. 바인딩: 레지스트리에 스텁, 원격 인터페이스 또는 종속성이 부족할 수 있습니다.
  3. 찾아보기: 클라이언트의 클래스 경로에 필요한 클래스가 없을 수 있습니다.
  4. 원격 메소드 호출: 다음을 사용하여 객체 전송 서버의 CLASSPATH에 클래스가 없거나 클라이언트의 CLASSPATH에 클래스가 없는 객체를 수신하면 이 문제가 발생할 수 있습니다. issue.

이 경우 레지스트리가 지정된 클래스를 찾을 수 없는 시나리오 2입니다. 몇 가지 가능한 해결 방법은 다음과 같습니다.

  • JAR을 포함하는 CLASSPATH 사용: 필수 JAR 또는 디렉토리가 포함된 CLASSPATH로 레지스트리를 시작합니다.
  • 서버 JVM에 레지스트리 생성: LocateRegistry.createRegistry()를 사용하여 시작 서버 JVM의 레지스트리.
  • 동적 스텁 사용: UnicastRemoteObject Javadoc에 설명된 대로 동적 스텁을 활용합니다. 이 기술은 원격 인터페이스 또는 종속성과 관련된 잠재적인 호환성 문제를 상쇄합니다.
  • 예방 시나리오(4): 서버와 주고받는 객체의 CLASSPATH에 누락된 클래스가 없는지 확인하세요.

위 내용은 내 Java RMI 서버에서 \'java.rmi.ServerException: RemoteException\'이 발생하는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.