"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 중국어 웹사이트의 기타 관련 기사를 참조하세요!