- 13日 就く前に舌禍で下げるマーケット
- しっかりと休み採るのもプロの腕
投稿者: ブログの住人
電脳軟件を設ふ生業にて禄を食む者也。
- このトピックでは Linux での利用を想定した手順を示す。事前に bzip2 がインストールされている必要がある。他にも、Windows 7/8用、FreeBSD用、Mac OSX 用が利用可能だがここでは触れない。
- Virtual Magnifying Glass 3.7からソースコードを入手する
cd ~/ダウンロード wget http://sourceforge.net/projects/magnifier/files/magnifier%20for%20Linux/3.5/magnifier-linux-3.5.tar.bz2/download
- 解凍して、カレントディレクトリを替える
tar jxvf magnifier-linux-3.5.tar.bz2 cd magnifier-linux-3.5/
- インストールはとても簡単。これだけ。実行形式が /usr/bin/vmg にインストールされる。
sudo bash -x ./install.sh
- 動作確認を行う。インストールがうまくいっていれば、画面のどこかをクリックするまでの間維持される、拡大鏡が表示される。
vmg &
- トラブルシューティング
- bad ELF interpreter: そのようなファイルやディレクトリはありません
sudo yum install -y \ glibc-2.17-106.0.1.el7_2.4.i686 \ libX11-1.6.3-2.el7.i686 \ gdk-pixbuf2-2.31.6-3.el7.i686 \ gtk2-2.24.28-8.el7.i686
- /usr/bin/vmg: error while loading shared libraries: libgtk-x11-2.0.so.0: cannot open shared object file: No such file or directory
sudo yum install gtk2-2.24.31-1.el7.i686
- 未解決の障害。拡大鏡は表示されるがコンソールに次のメッセージが表示されブロッキングされる。
(vmg:14248): Gtk-WARNING **: module_path にはテーマ・エンジンがありません: "murrine", Form resource TMainWindow not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource. [TGlass.LoadBitmap] Loading /usr/share/magnifier/topleft.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/topright.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/bottomleft.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/bottomright.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/top.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/left.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/bottom.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/right.bmp [TMainWindow.SetTaskbarIcon] Loading /usr/share/magnifier/icon3.png Form resource TAboutWindow not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource. [TGlass.LoadBitmap] Loading /usr/share/magnifier/cecae.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/feusp.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/vmg.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/lupa.bmp [TGlass.LoadBitmap] Loading /usr/share/magnifier/usplegal.bmp Form resource TConfigDialog not found. For resourceless forms CreateNew constructor must be used. See the global variable RequireDerivedFormResource.
- bad ELF interpreter: そのようなファイルやディレクトリはありません
再現方法
- プラットホームは Windows 10 64-bit 版。
- ControlsFX (version 8.40.10) というオープン・ソースのライブラリを利用する為、NetBeans で構築したプロジェクトホームの直下に lib/ を作り、controlsfx-8.40.10.jar を配置。
- SceneBuilder を単独で起動して、プロジェクトで使う FXML を開き、歯車アイコン中の”Import JAR/FXML file…” というメニューから controlsfx-8.40.10.jar を選択。
- Custom から StatusBar コントロールを選択して ”Hierarchy” の所定の位置へ配置。
- FXML を保存後、SceneBuilder を閉じる。
- NetBeans を起動して、今回のプロジェクトを開き、プロジェクトツリーから当該 FXML をダブルクリック。
- 従来なら SceneBulder が自動的に起動して FXML も同時にオープンされるが、そのようにならず次のようなダイアログが表示されて失敗するようになった。
- “Show Details…”ボタンを押すと次のようなスタックトレースが表示される。
java.io.IOException: javafx.fxml.LoadException: /MYPROFILE/Documents/NetBeansProjects/PATH/TO/MYPROJECTHOME/form/[NAME].fxml at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:92) at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:82) at com.oracle.javafx.scenebuilder.kit.fxom.FXOMDocument.<init>(FXOMDocument.java:97) at com.oracle.javafx.scenebuilder.kit.editor.EditorController.updateFxomDocument(EditorController.java:2384) at com.oracle.javafx.scenebuilder.kit.editor.EditorController.setFxmlTextAndLocation(EditorController.java:664) at com.oracle.javafx.scenebuilder.app.DocumentWindowController.loadFromFile(DocumentWindowController.java:381) at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.performOpenFiles(SceneBuilderApp.java:554) at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleOpenFilesAction(SceneBuilderApp.java:424) at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.handleLaunch(SceneBuilderApp.java:403) at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStartGeneric(AppPlatform.java:139) at com.oracle.javafx.scenebuilder.app.AppPlatform.requestStart(AppPlatform.java:106) at com.oracle.javafx.scenebuilder.app.SceneBuilderApp.start(SceneBuilderApp.java:353) at com.sun.javafx.application.LauncherImpl.lambda$launchApplication1$163(LauncherImpl.java:863) at com.sun.javafx.application.PlatformImpl.lambda$runAndWait$176(PlatformImpl.java:326) at com.sun.javafx.application.PlatformImpl.lambda$null$174(PlatformImpl.java:295) at java.security.AccessController.doPrivileged(Native Method) at com.sun.javafx.application.PlatformImpl.lambda$runLater$175(PlatformImpl.java:294) at com.sun.glass.ui.InvokeLaterDispatcher$Future.run(InvokeLaterDispatcher.java:95) at com.sun.glass.ui.win.WinApplication._runLoop(Native Method) at com.sun.glass.ui.win.WinApplication.lambda$null$149(WinApplication.java:191) at java.lang.Thread.run(Thread.java:745) Caused by: javafx.fxml.LoadException: /MYPROFILE/Documents/NetBeansProjects/PATH/TO/MYPROJECTHOME/form/[NAME].fxml at javafx.fxml.FXMLLoader.constructLoadException(FXMLLoader.java:2601) at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2848) at javafx.fxml.FXMLLoader.processImport(FXMLLoader.java:2692) at javafx.fxml.FXMLLoader.processProcessingInstruction(FXMLLoader.java:2661) at javafx.fxml.FXMLLoader.loadImpl(FXMLLoader.java:2517) at javafx.fxml.FXMLLoader.load(FXMLLoader.java:2425) at com.oracle.javafx.scenebuilder.kit.fxom.FXOMLoader.load(FXOMLoader.java:89) ... 20 more Caused by: java.lang.ClassNotFoundException: org.controlsfx.control.StatusBar at java.lang.ClassLoader.findClass(ClassLoader.java:530) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) at javafx.fxml.FXMLLoader.loadTypeForPackage(FXMLLoader.java:2916) at javafx.fxml.FXMLLoader.loadType(FXMLLoader.java:2905) at javafx.fxml.FXMLLoader.importClass(FXMLLoader.java:2846) ... 25 more
回避方法
- 次のコマンドで、SceneBuilder.cfg を探す
- SceneBuilder.cfg をエディタで開き、次のように改修する
- 改修前
app.classpath=
- 改修後
app.classpath=$APPDIR/../../../Documents/NetBeansProjects/PATH/TO/MYPROJECTHOME/lib/controlsfx-8.40.10.jar
- 以上で対策完了。NB の再起動は不要。
dir /b /s "%UserProfile%" | findstr "SceneBuilder.cfg"
所感
- SceneBuilder fails to open with custom controls – from eclipse でのやり取りを参考に本稿を作成した。
- Jose Pereda 氏の発言によれば SceneBuilder 8.2.0 にて上記の回避策が不要になるとこことであるが、Fix はまだのようだ。