2017-12-11 6 views
1

다른 jar 파일에서 FXML을 여는 프레임 워크를 만들었습니다. 나는 그들을 엽니 다 사용fx : 리소스가 다른 JAR에있을 때 포함

(fxml)는 DB 쿼리에서 전달 된 문자열은 ...

FXMLLoader loader = new FXMLLoader(); 
Parent node = loader.load(getClass().getClassLoader().getResource(fxml).openStream()); 

이 내 모든 FXML 작동 내가 정말이 변경하지 않으 .

다른 것과 매우 유사한 구현을 할 수있는 새로운 창이 하나 있는데 FXL : FX와 FXML을 공유하고 싶었습니다.

그러나이 경우 오류 이 발생합니다. javafx.fxml.LoadException : 기본 위치가 정의되지 않았습니다. 내 전체 구현을 변경하지 않고 -

나는이 문제를 해결 어쨌든 거기 linked files

에 대한 링크를 찾았나요? 그렇지 않다면 로직을 복제 할 것입니다.

감사합니다.

+0

나는이 /fxml/location/view.fxml처럼 전체 위치를 사용하여 런타임에 작동하게 할 수 있었다 - 그러나 다음 SceneBuilder에서 열 수 없다 –

+0

로더에서 위치가 정의되지 않으므로 (일부 기능을 사용할 수 없게 됨) 'FXMLLoader.load (...)'의'InputStream' 버전을 사용하는 것은 일반적으로 좋지 않습니다. 위치를 지정하고 인수가없는'load()'메소드를 호출하십시오. –

답변

2

InputStream을 입력하면 location (URL)은 정의되지 않습니다. 분명히 당신의 FXML 어딘가에 위치를 사용하여 (예를 통해 위치 해상도) 시도

FXMLLoader loader = new FXMLLoader(getClass().getClassLoader().getResource(fxml)); 
Parent node = loader.load(); 
+0

감사합니다 - 약 2 년 동안 공개 스트림을 사용하고 있었는데 - 내가 처음 시작할 때 여기에서 찾은 것 같아요. 그것은 효과가 있었기 때문에 나는 더 이상 보지 않았다. –