Table of Contents
Archlinux環境にJDeveloper 11g/12c 複数バージョンインストール時のメモ。
1 環境
- OS: ArchLinux (Linux jizai 3.15.5-2-ARCH #1 SMP PREEMPT Fri Jul 11 07:56:02 CEST 2014 x86_64 GNU/Linux)
- DE: Gnome 3.12.2
- JDeveloper 11g Release 1 (11.1.1.3.0)
- JDeveloper 11g Release 1 (11.1.1.7.0)
- JDeveloper 11g Release 2 (11.1.2.4.0)
- JDeveloper 12c Release 1 (12.1.3.0.0)
2 12cインストール時のtmp領域足りない問題
JDeveloper 12cの Linux-Specific Installer
でインストール時に以下のエラーが起きた。
/tmp
領域が足りないですね。必要な分は 2G
のようです。メモリに余裕があれば /tmp
領域を拡大すれば問題解決です。
tmp足りないエラー
$ ./jdev_suite_121300_linux64.bin 0%....................................................................................................100% Not enough disk space in dir /tmp/sfx_6TUHbe, requires at least 2015 MB disk space Error during execution, error code = -1.
/tmp
領域のサイズを拡大する。
$ sudo mount -o remount,size=2560m /tmp $ ./jdev_suite_121300_linux64.bin 0%....................................................................................................100% ランチャのログ・ファイルは/tmp/OraInstall2014-07-23_01-41-50PM/launcher2014-07-23_01-41-50PM.logです。 Oracle Universal Installerを起動中です CPU速度が300MHzを超えていることを確認してください. 実際1794.296MHz 問題なし モニターの確認中: 少なくとも256色表示するよう設定されている必要があります. 実際 16777216 問題なし スワップ領域の確認中: 512MBを超えている必要があります. 実際5238780MB 問題なし このプラットフォームに64-bit JVMが必要かどうかを確認中. 実際 64 問題なし(64-bitは不要) 一時領域の確認中: 300MBを超えている必要があります. 実際79664MB 問題なし
/tmp
を拡大するのが難しい場合、 Generic Installer on Linux
jar形式の
インストーラーを使って -Djava.io.tmpdir=$HOME/tmp
JAVAオプションにて一時領域
を変えるようする方法もあります。
tmp領域のパス変数 TMP
TEMP
TMP_DIR
などを一時変える方法もありますが、実際に検証
してみたところ何れも失敗しました。
3 12c起動時にプロセスクラッシュ問題
12c起動時にプロセスクラッシュします。
$ jdeveloper/jdev/bin/jdev Oracle JDeveloper 12c 12.1.3.0.0 Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0x00007f7f30797960, pid=20635, tid=140185120179968 # # JRE version: Java(TM) SE Runtime Environment (7.0_51-b13) (build 1.7.0_51-b13) # Java VM: Java HotSpot(TM) 64-Bit Server VM (24.51-b03 mixed mode linux-amd64 compressed oops) # Problematic frame: # C 0x00007f7f30797960 # # Core dump written. Default location: /home/akira/Oracle/Jdev12.1.3.0.0/jdeveloper/jdev/bin/core or core.20635 # # An error report file with more information is saved as: # /home/akira/Oracle/Jdev12.1.3.0.0/jdeveloper/jdev/bin/hs_err_pid20635.log # # If you would like to submit a bug report, please visit: # http://bugreport.sun.com/bugreport/crash.jsp # /home/akira/Oracle/Jdev12.1.3.0.0/jdeveloper/jdev/bin/../../ide/bin/launcher.sh: 1207 行: 20635 中止 (コアダンプ) ${JAVA} "${APP_VM_OPTS[@]}" ${APP_ENV_VARS} -classpath ${APP_CLASSPATH} ${APP_MAIN_CLASS} "${APP_APP_OPTS[@]}" Error: JDeveloper can't recognize the JDK version $
GNOME_DESKTOP_SESSION_ID
環境変数が原因でしたので、Jdev起動シェールに
GNOME_DESKTOP_SESSION_ID
環境変数をクリアするようにした。
環境変数を確認する
$ env |grep GNOME GNOME_DESKTOP_SESSION_ID=this-is-deprecated XDG_CURRENT_DESKTOP=GNOME
Jdev12.1.3.0.0/jdeveloper/jdev/bin/jdev
を編集する
#!/bin/bash unset GNOME_DESKTOP_SESSION_ID #============================================================================= # Launcher for Oracle JDeveloper 11g Release 2 (11.1.2.4.0) # Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved. #============================================================================= ........... ★省略★
4 32bit版起動時のUnsatisfiedLinkError
Archlinux上で JDeveloper 11g
インストール直後起動時に以下のようなエラーが起きて起動
ができない状態でした。後から分かったのですが、12cでエラーが起きない理由は64bit版であ
るためでした。
$ jdeveloper/jdev/bin/jdev Oracle JDeveloper 11g Release 1 (11.1.1.3.0) Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. java.lang.UnsatisfiedLinkError: /home/akira/Oracle/Jdev11.1.1.3.0/jdk160_18/jre/lib/i386/xawt/libmawt.so: libXtst.so.6: cannot open shared object file: No such file or directory at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1699) at java.lang.Runtime.load0(Runtime.java:770) at java.lang.System.load(System.java:1003) at java.lang.ClassLoader$NativeLibrary.load(Native Method) at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1803) at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1720) at java.lang.Runtime.loadLibrary0(Runtime.java:823) at java.lang.System.loadLibrary(System.java:1028) at sun.security.action.LoadLibraryAction.run(LoadLibraryAction.java:50) at java.security.AccessController.doPrivileged(Native Method) at sun.awt.NativeLibLoader.loadLibraries(NativeLibLoader.java:38) at sun.awt.DebugHelper.<clinit>(DebugHelper.java:29) at java.awt.Component.<clinit>(Component.java:560) at oracle.ide.IdeCore.startupImpl(IdeCore.java:1156) at oracle.ide.Ide.startup(Ide.java:703) at oracle.ideimpl.DefaultIdeStarter.startIde(DefaultIdeStarter.java:35) at oracle.ideimpl.Main.start(Main.java:184) at oracle.ideimpl.Main.main(Main.java:146) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.ide.boot.PCLMain.callMain(PCLMain.java:62) at oracle.ide.boot.PCLMain.main(PCLMain.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.classloader.util.MainClass.invoke(MainClass.java:128) at oracle.ide.boot.IdeLauncher.bootClassLoadersAndMain(IdeLauncher.java:189) at oracle.ide.boot.IdeLauncher.launchImpl(IdeLauncher.java:89) at oracle.ide.boot.IdeLauncher.launch(IdeLauncher.java:65) at oracle.ide.boot.IdeLauncher.main(IdeLauncher.java:54) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at oracle.ide.boot.Launcher.invokeMain(Launcher.java:713) at oracle.ide.boot.Launcher.launchImpl(Launcher.java:115) at oracle.ide.boot.Launcher.launch(Launcher.java:68) at oracle.ide.boot.Launcher.main(Launcher.java:57)
awt
から利用している libXtst.so.6
シェアードライブラリが見つからないようなので
、 locate
で確認したら libxtst
パッケージがちゃんと入っている。32bit/64bitの問題だ
ろうなと思って、Archlinuxのパッケージリポジトリを検索したらやはり lib32-libxtst
が
存在した、これをインストールしたらエラーが解消されました。
libXtst.so.6
ライブラリの確認
$ locate libXtst.so /usr/lib/libXtst.so /usr/lib/libXtst.so.6 /usr/lib/libXtst.so.6.1.0 $ pacman -Qo /usr/lib/libXtst.so.6 /usr/lib/libXtst.so.6 は libxtst 1.2.2-1 によって保有されています
lib32-libxtst
をインストールする
★インストール $ sudo pacman -S lib32-libxtst [sudo] password for akira: 依存関係を解決しています... 相互衝突をチェックしています... パッケージ (1): lib32-libxtst-1.2.2-1 Total Download Size: 0.01 MiB Total Installed Size: 0.02 MiB :: インストールを行いますか? [Y/n] :: パッケージを取得します ... lib32-libxtst-1.2.2-1-x86_64 9.0 KiB 44.4K/s 00:00 [############################################################################] 100% (1/1) キーリングのキーを確認 [############################################################################] 100% (1/1) パッケージの整合性をチェック [############################################################################] 100% (1/1) パッケージファイルのロード [############################################################################] 100% (1/1) ファイルの衝突をチェック [############################################################################] 100% (1/1) 空き容量を確認 [############################################################################] 100% (1/1) インストール lib32-libxtst [############################################################################] 100% ★確認 $ pacman -Ql lib32-libxtst lib32-libxtst /usr/ lib32-libxtst /usr/lib32/ lib32-libxtst /usr/lib32/libXtst.so lib32-libxtst /usr/lib32/libXtst.so.6 lib32-libxtst /usr/lib32/libXtst.so.6.1.0 lib32-libxtst /usr/lib32/pkgconfig/ lib32-libxtst /usr/lib32/pkgconfig/xtst.pc lib32-libxtst /usr/share/ lib32-libxtst /usr/share/licenses/ lib32-libxtst /usr/share/licenses/lib32-libxtst $
5 文字化け
11g 起動したら日本語が例の豆腐形状となっていました。JdevにバンドされたJDKの
Jdev11.1.1.3.0/jdk160_18/jre/lib/fonts
の配下に fallback
ディレクトリを作成し、日
本語フォントへのシンボルリンクを貼っておく。また、起動オプションにフォントのアンチエ
イリアス (anti-aliasing)を有効にしておくとよいでしょう。
起動時の豆腐状
fallbackフォントの設定を実施する
★fallbackフォントの指定 $ cd ~/Oracle/Jdev11.1.1.3.0/jdk160_18/jre/lib/fonts $ mkdir fallback; cd fallback $ ln -s /usr/share/fonts/TTF/VL-Gothic-Regular.ttf VL-Gothic-Regular.ttf $ ln -s /usr/share/fonts/TTF/VL-PGothic-Regular.ttf VL-PGothic-Regular.ttf ★起動オプション設定 $ export _JAVA_OPTIONS="-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true" $ cd ~/Oracle/Jdev11.1.1.3.0/ $ jdeveloper/jdev/bin/jdev Oracle JDeveloper 11g Release 1 (11.1.1.3.0) Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
_JAVA_OPTIONS
をいちいち指定するのは非効率であれば、適当に /etc/profile.d/jdk.sh
や ~/.bash_profile
にて定義しておけばよいでしょう。
もう一度起動してみたら、ばっちりだね。
6 メニューバーの動作不具合
この問題は 11.1.1.3.0
だけ起きるようです。
JDeveloper起動後、ウィンドウを最大化した状態でメニューバーの操作がうまくできない問題 がある。詳細な原因がよくわからない、GTKウィンドウマネージャとうまく連携出来ていない気 がする。とりあえず、ウィンドウを最大化せずに問題から逃げた。
7 ランチャーから起動できるようにする
ランチャー起動できるように ~/.local/share/applications/jdev.desktop
ファイルを作成
しておく。
[Desktop Entry] Name=JDeveloper Exec=/home/akira/Oracle/Jdev11.1.1.3.0/jdeveloper/jdev/bin/jdev Icon=/home/akira/Oracle/Jdev11.1.1.3.0/jdeveloper/jdev/bin/coffee.png StartupNotify=true Terminal=false Type=Application Categories=Development;Java;
8 未解決問題
- フォントが醜い
- GTKLookAndFeelが使えない