0

私は現在、改札に取り組んでおり、小さなデモアプリケーションを開発しています。ここで、そのアプリケーションに静止画像を表示したいと考えています (より具体的には、この画像をパネルに追加し、それをホームページに追加する必要があります)。

これは私がこれまでに持っているものです:

1) 画像を保持するパネルの HTML コード。特定の改札コードは存在しません。プロジェクト構造に存在する画像のみを保持する必要があります。

<html><body>
  <wicket:panel>
    Just some static text inside the image panel...<br/>
    <img src="test.jpg"></img>
  </wicket:panel>
</body></html>

パネルは ImagePanel と呼ばれ、3 つのファイル (ImagePanel.java、ImagePanel.html、test.jpg) はすべて同じパッケージにあります。

2) ImagePanel の Java コード - 実際に行うことは何もないため、かなり短くなります。

public class ImagePanel extends Panel {
    public ImagePanel(String id) {
        super(id);
    }
}

3) ホームページの HTML コード:

<html><body>
  <div wicket:id="dynamicComponent"></div>
</body></html>

4) ホームページの Java コード:

public HomePage() {
    add(new ImagePanel("dynamicComponent"));
}

次の点に注意してください: 実際には、HomePage.java と ImagePanel.java は異なる OSGi プロジェクトにあります。ここでは、HomePage のコードを簡略化しています。実際には、ImagePanel はサービスを介して配置され、動的に追加されます。これはこれまでのところ機能しており、静的テキストが表示されます。しかし、画像はロードされていません。この壊れた画像のサムネイルが表示されます。

前述したように、ImagePanel 関連の 3 つのファイル (.java、.html、画像) はすべて、まったく同じパッケージにあります。静的テキストが表示されるので、ホームページ プロジェクトからパネル自体にアクセスできます。しかし、私は画像を表示することができません。

私が使用するアプリケーション サーバーは Jetty で、ホームページを保持するプロジェクト内から開始されます。

更新: 問題を次のように絞り込みました: ImagePanel.html 内に静的テキストのみを表示する限り、すべて正常に動作します。画像を追加したいとすぐに (以下に示すように wicket:link-tag 内であっても)、次の例外が発生します。

[qtp401543768-20] WARN org.apache.wicket.core.util.lang.WicketObjects - Could not resolve class [plugin.ImagePanel]
java.lang.ClassNotFoundException: plugin.ImagePanel

そのため、画像がなくても、サーバー バンドルは gui バンドルからクラスをロードし、静的テキストを表示できます。画像では、同じクラスの ClassNotFoundException になります。

ここでスタック トレース全体を見つけます:スタック トレース

4

2 に答える 2