2008-09-26 4 views
2

Java는 사용 가능한 프로토콜을 어떻게 결정합니까? 이클립스 내부에서 코드를 실행하면 정상적으로 작동합니다. 그런 다음 Eclipse 외부에서 동일한 코드를 실행하면 "알 수없는 프로토콜"MalformedURLException이 발생합니다. 코드베이스와 관련이있을 것 같은가요? 어떤 힌트라도 도움이 될 것입니다.Java에서 MalformedURLException이 발생하는 방법

감사합니다.

+0

어떤 프로토 콜입니까? 더 나은 점은 어떤 URL에 문제가 있습니까? – sblundy

답변

1

프로토콜을 해결하는 작업은 프로토콜 URL.handlers에 소문자로 저장되는 URLStreamHandler에 의해 수행됩니다. 핸들러는 URLStreamHandlerFactory에 의해 URL.factory에 생성됩니다. 아마 일식이 그걸로 원숭이인가?

URL constructors 중 일부는 스트림 처리기를 사용하며 URL.setURLStreamHandlerFactory으로 팩토리를 설정할 수 있습니다.

다음은 developing protocol handlers에 관한 웹 게시물입니다.

+0

URL은 응용 프로그램에서 처리해야하는 사용자 정의 URL ("media : ///")입니다. – Gabriel

+0

당신은 확실히 옳습니다. 내가하는 말만하는 코드를 찾을 수 있습니다. 이제는 모두 의미가 있습니다. 고맙습니다! – Gabriel

-1

아마도 클래스 경로 문제 일 수 있습니다. 포함 된 일부 라이브러리 (jar)에 종속 된 프로토콜을 사용하는 경우 eclipse에서 JAR을 내 보내면 프로젝트에 포함 된 JAR 파일이 Eclipse 외부의 실행 코드에서 발견되지 않을 수도 있습니다. jar 파일에 필요한 라이브러리를 가리키는 매니페스트 파일이 필요합니다. 프로토콜 핸들러를 정의

0

자바 표준 방법은 여기에 설명되어 있습니다 : 이 부트 로더에서 사용할 수있는 프로토콜 핸들러 클래스에 의존 http://java.sun.com/developer/onlineTraining/protocolhandlers/

(?). OSGi (그리고 이클립스)에서는 잘 작동하지 않는다. OSGi는 번들/플러그인이 프로토콜 핸들러에 기여할 수 있도록이 메커니즘을 감싸는 래퍼를 제공합니다. 참조 : http://www.osgi.org/javadoc/r4v41/org/osgi/service/url/URLStreamHandlerService.html

Eclipse는 자체 프로토콜 인 bundle-resource (iirc)도 Eclipse 외부에서 작동하지 않습니다.