■ やりたい事
AWS/EC2/Linux(No GUI)上のJConsole(以下「環境」の「AWS」)を、 ローカル上の仮想環境(VMware)のOS(GUI)から、遠隔起動する。 # これを応用すれば、JConsoleだけでなく、JMeter等にも利用できそう
環境
AWS* OS : CentOS7(CUIのみ) * Java : Java v1.8ローカル上の仮想環境(VMware)
* OS : CentOS7(GUI) * Java : Java v1.8
■ 解決案
https://blogs.yahoo.co.jp/dk521123/37291685.htmlでやったsshコマンドのオプション「-X」をつけるユーザ名「centos」。鍵「public-key-pair.pem」ホスト名「ec2-203-0-113-25.compute-1.amazonaws.com」の場合
# 文字化け対策 export LANG=en_US # ssh接続 sudo ssh -X -l centos -i /home/user/.ssh/public-key-pair.pem ec2-203-0-113-25.compute-1.amazonaws.com jconsole
■ トラブル
* 上記のコマンドを行う上でいくつかトラブルがあったので、その解決策をまとめる * 結論を言うと、以下をインストールする必要がある sudo yum install xauth sudo yum install libXrender.x86_64 sudo yum install libXtst.x86_64
【1】エラー「x11 forwarding request failed on channel 0」が返ってくる
* 上記のコマンドを実行したら、エラー「x11 forwarding request failed on channel 0」が 返ってきて、JConsoleが起動しない解決策
* 以下をインストールする sudo yum install xauth参考文献
https://qiita.com/mohi_teak/items/473fda1f03cbd9cc8518
【2】「libXrender.so.1」がないという旨の例外「UnsatisfiedLinkError」が発生する
* 上記の『【1】エラー「x11 forwarding request failed on channel 0」が返ってくる』を行い sshコマンドを実行したら、以下「エラー内容」のように 「libXrender.so.1」がないという旨の例外「UnsatisfiedLinkError」が発生するエラー内容
[日本語] Exception in thread "main" java.lang.UnsatisfiedLinkError: /[JDK Path]/libawt_xawt.so: libXrender.so.1: 共有オブジェクトファイルを開けません: そのようなファイルやディレクトリはありません [英語] Exception in thread "main" java.lang.UnsatisfiedLinkError: /[JDK Path]/libawt_xawt.so: libXrender.so.1: cannot open shared object file: No such file or director解決策
* 以下をインストールする sudo yum install libXrender.x86_64 sudo yum install libXtst.x86_64参考文献
https://stackoverflow.com/questions/29741518/centos-error-libxext-so-6-cannot-open-shared-object-file-no-such-file-or-dir
# sudo yum install libXext.x86_64 は既にインストールされており、不要だった
【3】JConsoleのGUI表示が文字化けしている
* 上記の『【2】「libXrender.so.1」がないという旨の例外「UnsatisfiedLinkError」が発生するる』を行い sshコマンドを実行したら、GUIでJConsoleが遠隔起動したが、文字化けを起こしている => 文字化けじゃ訳が分からないので、英語でいいから起動したい解決策
sshコマンドを実行する前に「export LANG=en_US」を実行し 英語表示にする # 恐らく、日本語表示にする方法もあると思うが、時間がないし、そんな難しい英語じゃないので...