Troubleshooting/Applet/ja
Contents
ウェブページにおけるJmolオブジェクトのJSmol/HTML5(非Java)版実行に関する問題
バイナリファイル転送の同時実行
利用するブラウザの種類によっては、一部のページで以下のような警告が表示されるかも知れません。
JSmolCore.js: synchronous binary file transfer is requested but not available (バイナリファイル転送の同時実行要求がありましたが、その機能は利用できません)
これは特に害のないものです。無視して頂いてもページは問題なく表示されます。
これはページ開発者に対する警告ですが、Jmol._alertNoBinary = false
をページコードに記すことにより表示しないようにすることができます。
ウェブページにおけるJmolオブジェクトのJava実行に関する問題
Jmolが表示されない
まずは待って下さい。Javaを最初に起動する時は時間がかかり、Jmolアップレットをダウンロードしなくてはなりません。だから、しばらくは待って下さい。
JavaセキュリティによりJmolがブロックされる
ブラウザ内に表示されるアップレットはJavaのセキュリティポリシーによってはブロックされるかも知れません。許可を求めるダイアログが表示された時、許可する指示を出すだけでいい場合もありますが、様々な設定があり解決はより難しいこともあります。
解決方法をJavaのインストールと有効化(Proteopedia wiki)で見つけることができるでしょう。ここではWindowsおよびMac OS Xの両環境における主な5種類のブラウザについて、順を追って説明されています。
一般的な提案として、ブラウザがJmolアップレットをブロックするのであればOracleのサイトから最新版のJavaを入手しアップデートするのがいいでしょう。
黄色い四角形にメッセージが記載されている
- 現象:
Jmolが表示されるはずの場所に黄色い四角形が表示され、その中にメッセージが記載されている。
- 解決方法:
メッセージを読んで下さい。Javaがまだインストールされていないか、またはブラウザの設定でJavaが使えないようになっているかのどちらかが考えられます。ブラウザでJavaを使えるよう設定を変更するか、あるいはOracle社のサイトからJavaを(再)インストールして下さい。
もしJavaが既にインストールされていることが確かであれば、ブラウザ(特にWindows環境下でのChrome)とJmolバージョンとの相性問題である可能性があります。 修正するには、こちらのページで使われているJmolバージョンにアップデートして下さい。
黒い四角形にエラーメッセージが表示される
- 現象:
Jmolが表示されるべき場所に黒い四角形が表示され、その中に Error. Click to get more information
(エラー。詳しくはクリックして下さい)というメッセージが記載されている。クリックすると以下のメッセージが記されたダイアログが開く。
Application error.(アプリケーションエラー。) The application could not execute.(アプリケーションを実行できません。) Click on 'Details' for more information.(Detailsをクリックするとより詳しい情報を表示します。)
クリックするとJavaコンソースが開きます。
load: class JmolApplet not found. java.lang.ClassNotFoundException: JmolApplet (etc.)
- 解決方法:
jmolInitialize()
の呼び出しコードを書き忘れていないかページのソースコードを確認して下さい。
jmolInitialize() と Jmol.js ライブラリの使い方も参照して下さい。
Internet Explorer 9 で Jmolが消える
サポート/Windows#IE9におけるJmolページについて(英語版)をご覧下さい。
Jmolは表示されますが、構造は表示されません
まず、構造ファイルのパスが正しく設定されているか確認して下さい(パスはhtmlページからの相対パスにするのがいいでしょう。但し、場合によっては絶対パスでも動作します。)
それでもまだ読み込みに失敗する場合、Javaコンソールを開いて(開き方はこちらをご覧下さい)、エラー内容を確認して下さい。ほとんどの場合、Javaのセキュリティ制限によるものでしょう(以下もお読み下さい)。
Javaセキュリティに関するエラー
Javaは、ウェブページがローカルディスクにアクセスできなくするというセキュリティポリシーに基づいてアップレットに制限をかけます。これはJmolアップレットによってファイルを開くのに制限が生じることを意味します。
この件に関するJavaセキュリティエラーは以下のような書式で表示されます。
FileManager opening file:sample.mol script ERROR: script ERROR: io error reading file:sample.mol: java.security.AccessControlException: access denied (java.io.FilePermission sample.mol read)
ルールの概要は以下の通りです。
- ローカルディスクにあるウェブページを開いた場合、Jmolアップレットはアップレットの.jarファイルがあるフォルダと同じフォルダまたはその下位にあるフォルダにあるファイルに限り開く(=構造やスクリプトを読み込む)ことができます。
- ウェブサーバのページである場合、Jmolアップレットは同じサーバ内にあるファイルだけを開くことができます。
- 但し、最近のJavaバージョンは同じサーバ内にあるファイルでもアクセスを拒否される場合があります。特にページが読み込まれた後に(ページのコントロールから)実行されるスクリプトについて言えることです。もしこのような現象が起こった時は、次節「アップレットと構造は表示されるが、それ以上操作できない」を参照して下さい。問題解消につながる方法がみつかるかも知れません。
- 署名済みアップレットを使うと以上の制限を回避することができます。ユーザは前もって明確な許可を出すことを求められ、許可された後は制限なくファイルにアクセスできるようになります。
署名無しアップレットと署名付きアップレットのデータアクセスについても参照下さい。
Macで構造が読み込まれません
Mac環境において、FirefoxあるいはMozilla/Geckoブラウザを使っている場合、ローカルディスクから読み込んだページではJavaセキュリティエラーにより構造の読み込みに失敗します。ローカルページのアップレットを表示する時はMac OS XのSafariを使って下さい。ウェブサイトの場合、Mozillaブラウザでも問題なく動作します。
- 補足:MacのMozillaブラウザはJavaScriptを呼び出し、ローカルパスを絶対パスとして処理することが知られています。このため、ローカルのウェブページではJavaセキュリティの例外エラーが発生します。
Linuxで構造が読み込まれません
Debian環境下において、Jmolアプリケーションは問題なく動作しますが、Jmolアップレットでは構造を表示することができません。
考えられる解決方法は、/etc/sysctl.d/bindv6only.conf(恐らくDebian環境のみに存在)にnet.ipv6.bindv6only=0
の記述を追加して再起動することです。
この情報は、Javaのネットワーク関係の問題について記したこちらの情報に基づいています。
Jmolと構造は表示されますが、それ以上操作できません
現象:
- 最初の構造読み込みは(恐らくスクリプトについても)問題なし
- その後ページ上のボタン、リンク、メニューをクリックするなどの動作を行っても構造を操作することはできません。
- 以下のようなJavaセキュリティエラーがJavaコンソールに表示されます。
FileManager opening http://www.something.com/example.spt ERROR in script: io error reading http://www.something.com/example.spt: java.security.AccessControlException: access denied (java.net.SocketPermission 147.156.1.4:443 connect,resolve) eval ERROR: ----line 1 command 1: script >> "example.spt" <<
これは最近のJavaバージョンでのみ適用されているJavaセキュリティ制限です。 解決方法の一つは署名済みアップレットを用いることです。 もう一つはコマンドスレッドを使うことでしょう。
Jmolは表示されますが、その他の問題があります
ポップアップメニューが開かず、サーバエラーが表示されます(Fedora)
- 現象:
ページが「jmolApplet()」の段階になるといつも、以下の様な大量のエラーがhttpdのログに出力される。
File does not exist: /var/www/html/jmol-11.8.25/org
また、Jmolポップアップメニューが開かず、更なる同様のエラーがサーバログに出力される。
- 解決方法:
これはブラウザ依存の問題です(Fedora 11のFirefox 3.5.9)。FirefoxはOpenJDKランタイム環境を使い、IcedTeaプラグインと関連付いています。SunのJavaとそのプラグインをインストールすることで問題は解決します。
- 但し...
OpenJDK Java を削除する必要があります。
(yum whatprovides java
でアンインストールすべきJavaの正確なバージョンが分かります):
> sudo yum remove java-1.6.0-openjdk-plugin-1.6.0.0-36.b18.fc11.i586 > sudo yum remove java-1.6.0-openjdk-1.6.0.0-36.b18.fc11.i586
次に新たなプラグインを追加します(リンク元ファイルのファイル名は異なるかも知れません):
> cd ~/.mozilla > mkdir plugins > cd plugins > ln -s /usr/java/jdk1.6.0_16/jre/plugin/i386/ns7/libjavaplugin_oji.so
更にFirefoxを開き、ツール > アドオン
を選択し、Javaプラグインを有効化にします。
ウェブページのコントロールにJmolが反応しない(Mac Safari)
この現象はMac OS X 10.6.4のSafari 5.0.1で報告されています
- ページは読み込まれますが、アップレットは表示されません(文字通り、メッセージバーにはthe applet bailedと表示される)。
- アップレットは読み込まれますが、アップレットを有効化するためのリンクをクリックしても何も起こらない。更にSafariの場合はクラッシュすることがある。
この問題はSafariの拡張機能AdBlockによって引き起こされるものです。この拡張機能を無効化することで問題を解消することができます。
Jmolアップレットからの情報取り出し
非署名アップレットはローカルディスクに対し読み書きすることはできないことを忘れないで下さい。 そのため、ファイル操作に関する動作は効きません。ディスクに出力することはできず、スクリプトコンソールまたはJavaコンソールにのみ出力することができます。
スクリプトコンソールからコードをコピーする
Recent versions of Java (at least 1.6.0_25 and later) prevent text output to Jmol Script Console to be copied and then pasted outside Java. 最近のJava(1.6.0_25以降)では、Javaスクリプトコンソールへのテキスト出力をコピーし、Java以外に貼り付けることはできないようになっています。
これに関して以下の様な対応ができます:
- 一部のJmolからの出力はJavaコンソールにも出力されます。Javaコンソールの内容であればコピーしてJava以外のアプリケーションに貼り付けることができます。
- スクリプトコンソール内のテキストを選択し、コピーするのではなくテキストエディタにドラッグ&ドロップします。
スクリプトのコピーと貼り付けも参照して下さい。