Java에서 어떻게 marlomedurlexception이 어떻게 발생합니까?
-
02-07-2019 - |
문제
Java는 어떤 프로토콜을 사용할 수 있습니까? 내부 이클립스에서 코드를 실행하면 잘 작동합니다. 그런 다음 외부 이클립스에서 동일한 코드를 실행하고 "알 수없는 프로토콜"층식 붕괴를 얻습니다. 아마도 코드베이스와 관련이 있습니까? 모든 힌트가 도움이 될 것입니다.
감사!
해결책
프로토콜을 해결하는 작업은 URLStreamHandler
, 저장된 URL.handlers
소문자의 프로토콜에 의해. 핸들러는 차례로 URLStreamHandlerFactory
~에 URL.factory
. 일식이 원숭이가 될까요?
일부 URL 생성자 스트림 핸들러를 가져 가면 공장을 설정할 수 있습니다. url.seturlStreamHandlerFactory.
다음은 웹 게시물입니다 프로토콜 핸들러 개발.
다른 팁
프로토콜 핸들러를 정의하는 Java 표준 방법은 다음과 같습니다.http://java.sun.com/developer/onlinetraining/protocolhandlers/
이는 Boot (?) 클래스 로더에서 사용할 수있는 프로토콜 핸들러 클래스에 의존합니다. 그것은 Osgi (따라서 일식)와 잘 작동하지 않습니다. OSGI는이 메커니즘 주위의 래퍼를 제공하여 번들/플러그인이 프로토콜 핸들러를 기여할 수 있도록합니다. 보다: http://www.osgi.org/javadoc/r4v41/org/osgi/service/url/urlstreamhandlerservice.html
Eclipse는 또한 자체 프로토콜을 제공합니다. Bundle-Resource (IIRC)는 Eclipse 외부에서는 확실히 작동하지 않습니다.
아마도 클래스 경로 문제 일 것입니다. 포함 된 일부 라이브러리 (JAR)에 의존하는 프로토콜을 사용한 다음 Eclipse에서 항아리를 내보낸 경우 프로젝트에 포함 된 JAR 파일은 Eclipse 외부의 실행 코드에서 찾을 수 없을 것입니다. 항아리에 필요한 라이브러리를 가리키는 매니페스트 파일이 필요합니다.