私の仕事は、メディアファイルのリストを表示し、これらのメディアファイルをデフォルトのOSメディアプレーヤーで別々に実行する小さなプログラムを作成することです。netbeansで実行可能なJarプロジェクトの適切なパッケージ化
私の現在のソリューションは、すべてのメディアファイルを保持しているパッケージを作成するようなものだった:
-com.media
|_a.mp4
|_b.mp4
一時ディレクトリに以下のコードをコピーし、選択可能なmp4は、デフォルトのOSのメディアプレーヤーを実行します:
私はそれがespectedとして動作しますが、私はclean/build
を行う際に、ビルドから作成
.jar
を実行Netbeansのを介して、プログラムを実行すると
public File copyTempMedia(File tempAppFolder, String videoName) {
URL f = getClass().getResource(String.format("%s/%s", Constants.MEDIA_LOCATION, videoName));
File from = new File(f.getPath());
File to = new File(tempAppFolder.getAbsolutePath());
try {
FileUtils.copyFileToDirectory(from, to);
} catch (IOException ex) {
Logger.getLogger(MediGUIModel.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Temp video copied: " + to.getAbsolutePath() + "/" + to.getName());
return to;
}
public void triggerMediaPlayer(String fileLocation) {
System.out.println("Triggering media player: " + fileLocation);
try {
if (OPERATIN_SYSTEM.contains("Linux")) {
Runtime.getRuntime().exec("sh -c " + fileLocation);
} else if (OPERATIN_SYSTEM.contains("Windows")) {
Runtime.getRuntime().exec("cmd /c " + fileLocation);
}
} catch (IOException ex) {
Logger.getLogger(MediGUIModel.class.getName()).log(Level.SEVERE, null, ex);
ex.printStackTrace();
}
}
、メディアファイルが読み込まれていないようですので、私の質問は以下のとおりです。
- なぜNetbeansで動作し、ビルド.jarでは動作しないのですか?
- これはこの問題の最適な解決方法ですか?
- メディアを別にパッケージする必要がありますか?
ありがとうございます。
編集
だから、コンソールの代わりに、ダブルクリックジャーを通じて実行した後、私はファイルを読み込む行にnullポインタ例外を取得することです:
URL f = getClass().getResource(String.format("%s/%s", Constants.MEDIA_LOCATION, videoName));
なぜそれがNetebeansでは動作しませんが、ビルド/ jarで?
jarファイル内に別の場所がありますので、getResourceやgetResourceAsStreamで問題なく読み込めますか?
ちょっとCorey、私は 'getResourceAsStream'を使ってみましたが、これはnullを返します。 他の提案はありますか? – shep
jarファイルにメディアファイルを置くことができる別の場所があるので、 'getResource'または' getResourceAsStream'によって問題なく読み込まれますか? – shep
パスが正しくないので、あなたはnullを取得しています。先行するスラッシュ「/com/media/a.mp4」を追加してみてください。 – Corey