>Java >java지도 시간 >내 RMI 서버에서 \'java.rmi.ServerException: 서버 스레드에서 RemoteException이 발생했습니다(ClassNotFoundException)\'가 발생하는 이유는 무엇입니까?

내 RMI 서버에서 \'java.rmi.ServerException: 서버 스레드에서 RemoteException이 발생했습니다(ClassNotFoundException)\'가 발생하는 이유는 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-11-30 10:11:14368검색

Why Do I Get

"java.rmi.ServerException: 서버 스레드에서 RemoteException이 발생했습니다(ClassNotFoundException)"

문제:

RMI 서버를 시작하려고 할 때 다음 예외는 다음과 같습니다. 발생:

진단:

기본적인 문제는 RMI 레지스트리가 원격 인터페이스에서 참조된 클래스를 찾을 수 없다는 것입니다. 이는 여러 상황에서 발생할 수 있습니다:

  • 내보내기: 스텁 생성 도구(rmic)가 실행되지 않았거나 UnicastRemoteObject Javadoc의 서문에 설명된 필수 클래스 경로 수정이 수행되지 않았습니다. .
  • 바인딩: 레지스트리에 스텁이 없으며 원격 인터페이스 또는 해당 클래스 경로에 대한 종속성.
  • 찾기: 클라이언트의 클래스 경로에 동일한 클래스가 없습니다.
  • 원격 메서드 호출: 클라이언트가 클래스 경로에 누락된 클래스의 객체를 서버로 보냈거나 서버가 클라이언트의 클래스 경로에 누락된 클래스의 객체를 반환했습니다. classpath.

해결책:

이 특별한 경우 문제는 클래스 경로에서 필요한 클래스가 누락된 레지스트리와 관련이 있습니다. 이 문제를 해결하려면 다음과 같은 몇 가지 옵션이 있습니다.

  • 관련 JAR 또는 디렉터리를 포함하는 수정된 CLASSPATH로 레지스트리를 시작합니다.
  • 내에서 LocateRegistry.createRegistry()를 사용하여 레지스트리를 시작합니다. 서버의 JVM.
  • UnicastRemoteObject Javadoc에 설명된 대로 동적 스텁을 활용합니다. 그러나 이를 위해서는 종속성 문제를 해결해야 할 수도 있습니다.
  • 객체 전송에 대한 클래스 경로 일관성을 확인하여 위의 경우 (4)가 발생하지 않도록 하세요.
  • 이것이 배포 옵션.

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

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