外部ライブラリ(JMF)を含むプロジェクトをパッケージ化できるように、fat-jareclipseプラグインをダウンロードしてインストールしました。しかし、アプリケーションを実行すると、「デバイスが見つかりません」と表示されます。これは、jmf.jarがWebカメラを検出できないため、新しいjarファイルに含まれていなかったことを意味しますか?eclipseでアプリケーションを実行しているときは、エラーは発生せず、問題なくWebカメラを検出できるためです。
どうすればこの問題を解決できますか?
いいえ、「デバイスが見つかりません」は典型的な JMF 応答です。ビデオ/オーディオの入力または出力デバイスが見つからないようです。したがって、JMFは確かにあなたの瓶の中にあり、単に不平を言っていると思います.
パックアップされたクラスに何かが欠けている可能性はありますか? Eclipse のクラスパスにあるが、大きな jar に含まれていないものはありますか?
アップデート
どこに問題があるのかを思い出しました。パフォーマンス上の理由などから、JMF はネイティブ コードを使用しています。JMF をインストールすると、DLL (Windows) または .so (Linux/Mac?) がインストールされます。JMF のクラスパスに広範囲にわたる変更を加えた場合、JMF はこれらのコンポーネントを見つけるのに苦労していると思います。
ソフトウェア エミュレーション ドライバも利用できると思います。それを試してみて、jar から問題なく動作するかどうかを確認できますか?
私はちょうど今これと同じ問題を抱えていました、あなたがこれをしたかどうかはわかりませんが、あなたの.jarファイルが置かれているのと同じディレクトリにjmf.propertiesファイルを追加することによってそれを解決しました。jmf.propertiesは、JMFインストールディレクトリのlibディレクトリにあります。コピーして貼り付けるだけです。
Sun フォーラムで、他の誰かが JMF で問題を抱えている投稿を見つけました。ある回答者は次のように提案しました。
FMJ ( http://www.fmj-sf.net/ ) または gstreamer-java ( http://code.google.com/p/gstreamer-java/ ) を試してください。
メディア フレームワーク製品を切り替えることが解決策になる可能性はあります (もちろん、保証はほとんどありません)。
おそらく、fatjar は静的コード分析を使用して生成された JAR に含まれるクラス ファイルを特定し、JMF は何らかのレジストリに基づいて他の jar からクラスをロードする動的な手法を実行している可能性があります。調べる方法の 1 つは、スイッチを指定してアプリケーションを実行し-verbose:class、出力を調べて、ロードに失敗したクラスを確認することです。