私は自分のデータファイルがどこにあるかを中心に展開するニーズの収束を持っています。現在のアプリケーションでは、すべてのクラスファイルとデータファイルがJARに含まれています(Eclipse IDEを使用して構築)。
人々がこの情報を入手する方法はさまざまであるように思われることに気づきました。画像ファイル(グラフィックス)の場所へのパスが必要です。URLとしても必要ですoツールキット呼び出しを使用します。
Toolkit tk = frame.getToolkit();
image = tk.getImage(url.toFile());
しかし、URLなどの作成に問題があります。私はいくつかの異なる方法を試しました。この時点で、ファイルシステムのクラスファイルの隣にデータファイルを保持します。私は自分の仕事に別の関数を追加しています-デバッグで実行するときに/binディレクトリを削除します。
// in class BwServices at init:
try {
rootDataPath = BwServices.class.getProtectionDomain()
.getCodeSource().getLocation().getPath();
rootDataPath = URLDecoder.decode(rootDataPath, "UTF-8");
fileSystemAccess = true;
}
if(rootDataPath.endsWith("/bin/"))
rootDataPath = rootDataPath.substring(0, rootDataPath.length() - 4);
後で...画像を取得するために行きますが、一部の通話が機能しません。理由がわかりません。
私は2つのことを試しました...
// 1
String s = "file://" + rootDataPath + d.toString() + fileName;
url = frame.getClass().getResource(s);
// 2
try {
url = new URL(s);
} catch (MalformedURLException e) {
trace("getImage - can't get url: " + s);
e.printStackTrace();
}
どちらにも問題があります。
さまざまな場所から画像を取得するための電話があります。'frame'は、クラスBwFrameの実行中の親フレームです。
私の道はどんな試みでもこのように出てきます...
rootDataPath:/ C:/ Users / Markgm / Documents / DEV / worksheet / bwp /
そのため、クラスファイルが存在する場所に関連するファイルについて、ツールキットのFileInputStreamまたはURLのいずれかを開く方法を探しています(デバッグ中の場合はいくつかのトリックがあります)。クライアント側のアプリの場合、これがこれです。いつかこれをアプレットとして実行したいと思うかもしれませんが、画像ファイルがどこにあるべきかわかりません。(50x75のトランプといくつかのボタンの画像)どんな助けやアドバイスも大歓迎です!
TIA、マーク