10

大規模な既存のプロジェクト(Vizster)からJavaアプレットを作成しています。MacOSXのJDK1.5でNetBeans6.7.1を使用しています。

単一の出力.jarファイルからアプレットを実行しようとしていますが、これを実行すると、Firefoxの画面の下部に「アプレットがロードされました」と表示され、Javaコンソールには何も表示されませんが、アプレットのウィンドウ。これ以前のFirefoxでは、「appletNotLoaded:ClassDefNotFoundError」などのエラーやセキュリティエラーなど、さまざまなエラーが発生しましたが、Javaコンソールに出力が表示されることはありません。アプレットのhtmlファイルは次のとおりです。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 <html>
  <head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <applet codebase ="." code="zuve.ZuveApplet.class"
            archive="ZuveApplet.jar"
            height="1000" width="1000"/>
  </body>
</html>

ここで、zuve.ZuveApplet.classは私のメインメソッドが配置されている場所であり、「ZuveApplet.jar」は出力jarファイルの名前です。メインメソッドクラスであるZuveApplet.javaは次のとおりです。

package zuve;

import vizster.Vizster;
import vizster.VizsterLib;
import java.applet.Applet;

 public class ZuveApplet extends Applet {
     public static final String DEFAULT_START_UID = "186297";

     @Override
     public void init() {
        new Vizster();
     }

    public static void main(String[] argv) {
        VizsterLib.setLookAndFeel();
        //String startUID = argv.length > 0 ? argv[0] : DEFAULT_START_UID;
        String startUID = DEFAULT_START_UID;
        String file = argv.length > 0 ? argv[0] : null;
        new Vizster(startUID, file);
    }
 }

アプレットはスタンドアロン(htmlに埋め込まれていない)として完全に動作しますが、埋め込む必要があります。「Vizster」オブジェクトはJFrameの拡張であるため、そのインスタンスを作成してアプレットに追加できるはずです。これよりもはるかに複雑でしょうか?

残念ながら、私はJavaとアプレット全般に不慣れです。ソースツリー構造が問題になっているというフォーラムの投稿をたくさん見たので、次のようにします。

1)複数のパッケージを使用しているのは問題ですか?それらはすべて私のプロジェクトのsrcディレクトリにあります。

2)Javaホームディレクトリに配置する必要があるものはありますか?多くの人がクラスパスの問題を抱えていることは知っていますが、私は最新のIDEを使用しています。

3)プロジェクトをNetBeans Java Webアプリケーションプロジェクトにインポートする場合、アプレットを.jarとしてプロジェクトに追加する必要がありますか、それともプロジェクト全体を追加する必要がありますか?

4)元々、このアプレットを作成したとき、依存関係としていくつかのソースファイルと多数の.jarライブラリがありましたが、出力.jarを調べたところ、コンパイルされたソースファイルだけが表示されました。ライブラリからのファイルの痕跡はありませんでした。これはどうあるべきですか?出力.jarを含まれているフォルダーから移動すると、スタンドアロンで実行できなくなることに気付きました。.jarは自己完結型であるはずだと思いましたが、これは真実ではありませんか?実行可能jarの作成について知っておくべきことはありますか?

5)補足として、htmlのアプレットタグに示されているアプレットのサイズは、アプレット自体のサイズと正確に一致する必要がありますか?

膨大な投稿と非常に漠然とした問題で申し訳ありませんが、私はアプレットやJavaについて誰も知らないチームと協力しています(私たちの本当に素晴らしい人です、私は知っています)。どんな種類の助けや一般的な提案も本当に役に立ちます。

ありがとうございました!

4

1 に答える 1

15

アーカイブ属性で複数のjarを指定できます。

<applet codebase ="." code="zuve.ZuveApplet.class"
        archive="ZuveApplet.jar,thing.jar,anotherThing.jar"
        height="1000" width="1000"/>

JFrameは最上位のコンテナであるため、アプレットに追加することはできません。アプレットにオブジェクトのインスタンスを作成させ、独自のウィンドウを開かせることができます。より柔軟なアプローチは、オブジェクトをJPanelにリファクタリングすることです。JPanelとして、JAppletに追加することも、アプリケーションとしての実行をサポートする場合はJFrameに追加することもできます。

また、JNLPを見てください。これにより、コードをアプレットまたはアプリケーションとしてデプロイでき、印刷およびローカルファイルアクセス用のAPIも提供されます。単純なアプレットでは使用できない機能。

于 2010-05-13T21:57:00.380 に答える