Scene Builder 8.3.0 사용시, Segmentation Fault 오류 조치 방법 (Ubuntu)

최근에 제가 우분투를 다시 새로 설치하게 되면서, 기존에 있던 개발 도구, 문서 편집기 등을 다시 설치해야 되는 일을 맞이하게 되었습니다. 그런데, 오늘 JavaFX 코딩을 위해 Scene Builder를 설치해 실행하니 실행이 되지 않은 문제가 발생하였습니다.



처음에는 바이너리 파일에 문제라고 생각하지 않고, 무언가 값을 주지 않아서 그런가 싶어, IntelliJ IDEA 프로그램과 연동하여 실행도 시켜봤지만 결과는 똑같았습니다.



문제의 원인

원인을 확인해보고자, gdb 디버거로 열어봤습니다.



런타임 오류가 발생합니다. 정확하게 분석해보진 않았지만, 어딘가 초기화 되지 않은 메모리 영역에 접근하려다가 실패했거나, NULL을 참조한 것 같았습니다.



문제의 해결

해결 방법은 의외로 간단합니다. 처음에는 Scene Builder가 Java 기반의 프로그램인지 까먹고 있다가 여러 곳을 수소문해봤지만 해법이 나오지 않았고, Java 기반의 프로그램이었다는 것을 알고, 다음과 같은 방식으로 접근해 봤습니다.


1. Scene Builder를 실행하는 파일은 바이너리 파일이다. 분명 Java 계열 프로그램이라면 본래의 jar 파일이 존재할 것이다.

2. jar 파일을 실행해보니 별다른 문제가 없이 잘 실행된다. 아무래도 바이너리 파일의 문제였던 것 같다.

3. 바이너리를 직접 만들기는 시간이 조금 걸리니, Shell Script로 간단히 하면 될 것 같다.


확실히 SceneBuilder 디렉터리 안에는 app 디렉터리가 있고, 그 안에는 실제 Scene Builder 프로그램인 jar 파일이 존재함을 확인할 수 있었습니다.



dist.jar 파일이 Scene builder입니다. 아래 명령어를 입력하여 한 번 실행해보겠습니다.


$ java -jar dist.jar


문제가 없이 잘 실행됨을 알 수 있습니다.


그럼 우리가 Scene Builder를 실행할 때마다 이렇게 커맨드를 입력해서 실행해야 되나요? 번거롭긴 하죠. 그래서, 프로그램 바로가기 코드를 조금 바꿔서 클릭으로도 실행할 수 있게끔 한 번 해보도록 하죠.


# vim /usr/local/share/applications/sceneBuilder.desktop

vim, gedit 등의 프로그램으로 Scene Builder 바로가기 프로그램을 열어줍니다.


[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Name=Scene Builder
Icon=/opt/SceneBuilder/SceneBuilder.png
Path=/opt/SceneBuilder
Exec=java -jar app/dist.jar
StartupNotify=false
X-UnityGenerated=true

위 내용을 복사 붙여넣기 한 후, 저장해줍니다.



이제 마우스 클릭만으로도 Scene Builder를 실행할 수 있게 되었습니다.



마치며...

리눅스에서 생긴 간단한 문제이지만, 워낙 자료가 없어 한 번 올려봤습니다. 혹시라도 JavaFX를 이제 막 하시려는데, Scene Builder에서 오류가 있어 코딩에 어려움이 있다거나 그러면 곤란하겠죠? 


여기까지 Scene Builder 오류 조치 방법이었습니다.

comments powered by Disqus

Tistory Comments 0