2016-09-12 7 views
0

javahelp 시스템을 도움말 파일로 사용하는 독립형 Java 프로그램을 사용하고 있습니다. 이 프로그램에는 사용자가 런타임에 데이터에 대한 다양한 분석을 수행 할 수 있도록 선택할 수있는 '모듈'이 내장되어 있습니다. 다른 개발자가 자신의 알고리즘을 만들 수 있도록 플러그인 폴더에 배치되는 플러그인 모듈을 실행할 수있는 기능을 추가하고 있습니다.JavaHelp : 외부 jar 파일에서 helpset로드

javahelp .hs 파일과 지원되는 docs (.xml, .html, .map 등)와 함께 plugins 폴더의 .class 파일로 시작했습니다. 플러그인 폴더에서 .hs 파일을 읽고 주 프로그램 도움말 시스템과 병합 할 수 있었지만 아무런 문제가 없었습니다.

그런 다음 모든 파일을 jar 파일로 묶었습니다. 그 방법은 대부분의 개발자가 플러그인을 배포하는 방법을 생각하기 때문입니다. .class 파일은 모두로드되어 실행되지만 이제는 .hs 파일을 더 이상로드 할 수 없습니다. HelpSet 클래스에는 .hs 파일의 위치가 포함 된 URL이 필요합니다. jar 파일을 들여다 보라고 말합니까? 어떤 도움을 주시면 감사하겠습니다.

답변

0

누군가가 동일한 문제를 겪고있는 경우에 대비하여 내 문제는 jar 파일 내부에서 도움말 세트 파일에 액세스하는 데 사용했던 경로 이름의 형식입니다.

URL helpSetLoc = new URL("jar:file:" + File.separator + pluginList.get(i).getJarFile()+"!/"+pluginList.get(i).getHelpSetName()); 

getJarFile() 방법 (절대 경로를 포함) jar 파일의 이름을 반환 형식합니다 (는 JavaHelp 사용자 가이드의 섹션 4.6.7에서 here을 발견)로 URL을 형성하는 것입니다. 내 getHelpSetName 메서드는 패키지 이름과 으로 슬래시로 구분하여 myPlugin/pluginHelp.hs과 같이 반환했습니다.

내 문제는 Windows에서 백 슬래시를 반환하는 패키지 이름과 도움말 파일 이름 사이에 File.separator를 사용하고 있다는 것이 었습니다. 나는 또한 이중 백 슬래시를 시도했다. 슬래시를 사용해야했는데 그렇지 않으면 HelpSet 생성자가 파일을 찾을 수 없습니다.