2016-09-09 7 views
0

私はJavaでMinim 2.2.0ライブラリを使用しています。ライブラリでは、2つのメソッドを定義するヘルパークラスを定義し、このクラスのオブジェクトをMinimコンストラクタに渡す必要があります。私は以下のようにMinimHelperクラスを書いた。JavaでMinimライブラリを使用しています。ヘルパークラスを動作させることができませんでした

public class MinimHelper { 
    String sketchPath(String fileName) { 
     return "C:\\Users\\Martin\\Downloads\\"+fileName; 
    } 

    InputStream createInput(String fileName) { 
     InputStream is = null; 
     try{ 
      is = new FileInputStream(sketchPath(fileName)); 
     } 
     catch(Exception e){ 
      System.out.println(e.toString()); 
     } 
     return is; 
    } 
} 

そして

public class Main { 
    public static void main(String[] args) { 
     // TODO Auto-generated method stub 
     AudioPlayer player; 
     Minim minim = new Minim (new MinimHelper()); 
     player = minim.loadFile("Butterfly.mp3"); 
     player.play(); 
    } 
} 

しかし、私は、コンソールに次のエラーを取得していますが、次のように私は私のメインを書きました。

==== JavaSound Minim Error ==== 
==== Couldn't find a sketchPath method on the file loading object provided! 
==== File recording will be disabled. 

==== JavaSound Minim Error ==== 
==== Couldn't find a createInput method in the file loading object provided! 
==== File loading will be disabled. 

==== JavaSound Minim Error ==== 
==== Error invoking createInput on the file loader object: null 

Exception in thread "main" java.lang.NullPointerException 
    at ddf.minim.javasound.JSMinim.getAudioRecordingStream(Unknown Source) 
    at ddf.minim.Minim.loadFile(Unknown Source) 
    at ddf.minim.Minim.loadFile(Unknown Source) 
    at Main.main(Main.java:9) 

私が間違っているところを教えてください。

+1

「Butterfly.mp3」ファイルはどこにありますか? –

+0

[1つの質問に複数の質問があり、1つの質問につき1つの質問のみ](https://www.google.com/#q=stackoverflow%20one%20question%20per%20question&rct=j)、1つはおそらく@KevinWorkmanは可視性修飾子を使って他のものに答えているでしょう。 –

+0

@JarrodRobersonこれは[タグ:処理]の質問であり、[処理はJavaではありません](http://meta.stackoverflow.com/questions/321127/processing-java)ですのでご注意ください。このNPEは、標準的なJava NPEの質問と同じものではありません(または、少なくともそれは独自の質問に値するより複雑な問題が原因です)。私は質問を再び開くことに投票しています。 –

答えて

0

Minimがそれらを見つけるには、sketchPath()createInput()の関数がpublicである必要があります。

the sourceから、最終的にMinimはClass.getMethod()を呼び出して、定義した機能を取得します。 the Java APIから(強調鉱山):

このオブジェクトが表すクラスまたはインタフェースの指定公共メンバメソッドを反映するMethodオブジェクトを返します。

それは問題ではない場合:あなたが見て、それを言っているところButterfly.mp3ファイルがあることを確認してください。

C:\\Users\\Martin\\Downloads\\Butterfly.mp3が存在しますか?それには正しいパーミッションがありますか?

詳細については、MinimHelperクラス内にprintステートメントを追加してみてください。関数は呼び出されていますか?それに渡される値は何ですか?

+1

sketchPath()およびcreateInput()をpublicにすると、問題が解決されました。どうもありがとうございました。 –

+0

@MartinBorugadda問題ありません。私はなぜあなたが混乱しているのか分かりませんが、ドキュメンテーションはそれらを公開することについて何も言わないのです。ハッピーコーディング! –

関連する問題