私のブラウザからJavaで書かれたこの単純なHelloWorldコードを実行しようとしています( Chrome ):
public class HelloWorld extends JApplet {
public void init() {
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
JLabel lbl = new JLabel("Hello World");
add(lbl);
}
});
}
catch (Exception e) {
System.err.println("createGUI didn't complete successfully");
}
}
NetBeans でコンパイルしてから、WebApplicationプロジェクトを作成しました。アプレットを実行する HTML コードは次のとおりです。
<html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p><applet code="HelloWorld" archive="applet_HelloWorld.jar" width="590" height="530"></applet></p>
</body>
</html>
NetBeansからアプレットを実行すればうまくいきます。しかし、HTMLコードをダブルクリックして実行すると、ブラウザから次のメッセージがポップアップ表示されます。
セキュリティ設定により、ローカルアプリケーションの実行がブロックされています。
私はInternet ExplorerとFirefoxを試したが何もしなかった。
このメッセージは、Javaの最後の更新後に現れ始めました。問題はどこだ?
読んだ後 Java 7 Update 21セキュリティの詳細な改善 言及..
導入された変更により、自己署名または署名なしのいずれの場合も、エンドユーザーがアプリケーションを実行できなくなる可能性があります。
私はこれがどのようにして緩いクラスのファイルになるのだろうかと思っていました - すべての中で「最も単純な」アプレット。
セキュリティ設定により、ローカルアプリケーションの実行がブロックされました
これは、JREがデフォルトの「高」セキュリティに設定されている場合に、ローカルファイルシステムからロードされる、緩いクラスファイルで構成されるアプレットに表示されるダイアログです。設定.
JREのわずかな癖は、のポイント3でそれを作り出しただけであることに注意してください。
これで見られる単純なアプレット(緩いクラスファイル)をロードするなら サイズ変更可能なアプレットデモ オフインターネット - それはapplet
を誇っていますの要素:
<applet
code="PlafChanger.class"
codebase="."
alt="Pluggable Look'n'Feel Changer appears here if Java is enabled"
width='100%'
height='250'>
<p>Pluggable Look'n'Feel Changer appears here in a Java capable browser.</p>
</applet>
それはまたうまくロードするようです。それを意味する: -
ローカルファイルシステムからロードされたアプレットは、インターネットまたはローカルサーバーからロードされたものよりも厳密なセキュリティサンドボックスの対象となります。
Java 7アップデート51以降。
私は今日も同じ問題に直面していて、Javaコントロールパネルのセキュリティ設定をHIGH
からMEDIUM
に変更することで問題を解決することができました。
まあ、これは潜在的に悪意のあるソフトウェアがあなたのシステムで実行され、ブロックされないようにするので、永久に中セキュリティにJavaセキュリティ設定を永久に設定することは実際には推奨されません。そのため、アプレットを実行した後に設定をHIGHに戻すことをお勧めします。
それでおしまい!
Linux を使用している場合、これらの設定は/usr/bin/jcontrol
(または現在のJavaツールを取得するためのパス設定)を使用して利用できます。 ~/.Java/deployment/deployment.properties
内のファイルを編集して "deployment.security.level = MEDIUM"を設定することもできます。
驚くべきことに、この情報はオラクルのWebサイトからすぐには入手できません。 Java.Sun.comが恋しいです...
あなたが私のようにJavaコントロールパネルがセキュリティレベルを高から中に変更するためにセキュリティタブの下にセキュリティスライダーを表示しないなら、これらの指示に従ってください: - Javaの既知のバグ:セキュリティスライダーが見えない 。
インストール後、Javaを有効/無効にするためのチェックボックスとセキュリティレベルスライダは、Javaコントロールパネルの[セキュリティ]タブに表示されません。これは7u10以降で起こります。
これは、Java 7u10以降がスタンドアロンインストールのJavaFXと競合するためです。例:Java 7u 5およびJavaFX 2.1.1がインストールされていて、Javaが7u11に更新されている場合、Javaコントロールパネルにチェックボックスまたはセキュリティスライダは表示されません。
Java 7u10以降をインストールする前に、すべてのバージョンのJavaおよびJavaFXをアンインストールすることをお勧めします。
この問題を解決するには、次の手順に従ってください。
1。 Windowsの[アンインストール]コントロールパネルを使用して、すべてのバージョンのJavaとJavaFXを削除します。 Javaのアンインストール に関する指示.
2。 Microsoftのアンインストールユーティリティを実行して、破損したレジストリキーを修復し、プログラムが完全にアンインストールされたり、新しいインストールやアップデートがブロックされたりするのを防ぎます。
3。 Windows オフラインインストーラ パッケージをダウンロードしてインストールします。
私の問題は、Java 8を使用してportecle.jnlpファイルをローカルに実行することでした。
私にとってうまくいったのは
ステップ3では、file:/// c:/path/portecle.jnlpを追加することもできますが、この追加は私の場合には役に立ちませんでした。
Java 8以降では、Javaの下の[セキュリティ]タブに「中」のリスク設定はありません。
古いJavaに戻るまで、このエラーが発生し続けるでしょう(ただしJava 7が推奨されていますが、これは終焉を迎えました)。
32ビット版と64ビット版の両方をインストールします。ブラウザは64ビットマシン、64ビットOSの場合でも32ビットです。
私は練習のためにJavaアプレットに付属する古いData Structure and Algsの本を使っています。だから私はいくつかのアプレットをローカルに保存して実行する必要がありました。現在、Edge、Chrome、およびIE 11を使用してWindows 10 OSを実行しています。
実行中のアプレットはIE11でしか許可されていないようで、他の人が述べたようにあなたはアプレットを例外リストに追加しなければなりません。私が抱えている問題は、これらをローカルに保存し、IEで開くときに、 "file:/// ..."のように "C:\ ..."で始まるパスで開いたことです。他の答えは私にはうまくいきませんでした。
修正:だから、私は(引用符なしで)、 "file:///"を例外サイトのリストに追加し、ついにそれを動かしました。これにより、ローカルに保存されているアプレットを実行することもできます。また、アプレットパスごとに明示的に例外を追加する必要はありません。
プログラムの使用が終わったら、リストから例外を削除し、必要に応じて追加し直す予定です。
Javaアプレットはセキュリティ上のリスクを引き起こすため、最近のほとんどのブラウザでは無効になっています。実行するにはセキュリティを下げる必要があります。そのための Oracleによるガイド があります。