私は現在、改札に取り組んでおり、小さなデモアプリケーションを開発しています。ここで、そのアプリケーションに静止画像を表示したいと考えています (より具体的には、この画像をパネルに追加し、それをホームページに追加する必要があります)。
これは私がこれまでに持っているものです:
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 になります。
ここでスタック トレース全体を見つけます:スタック トレース