hi, i'm trying to build mp3spi (with tritounus-mp3) to work in an osgi environment. It provides some META-INF/services classes (AudioInputStream etc.) which should be made available to my class PlayerEngine so that i can playback mp3's. I added the following line to my PlayerEngine's Manifest: SPI-Consumer: *
and the provider (i wrapped mp3spi, tritounus etc. together) got also a line in the Manifest: SPI-Provider: * i can load the wrapped bundle fine, so i think this should work. The problem is when i try to manipulate the PlayerEngine with the static weaving tool i get: C:\Users\oli\Desktop> java -jar ..\Downloads\spifly-static-tool.jar .\equinox\SoundBox-PlayerEngine-1.0-SNAPSHOT.jar [SPI Fly Static Tool] Processing: .\equinox\SoundBox-PlayerEngine-1.0-SNAPSHOT.jar @@@ 1: <init>#()V#null~null ### 183: java/lang/Object#<init>#()V @@@ 1: start#(Lorg/osgi/framework/BundleContext;)V#null~[java/lang/Exception] ### 183: org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#<init>#(Lorg/osgi/framework/BundleContext;)V ### 182: org/dyndns/soundi/portals/interfaces/CommunicationAction#toString#()Ljava/lang/String; ### 182: org/dyndns/soundi/portals/interfaces/CommunicationAction#toString#()Ljava/lang/String; ### 183: java/util/Hashtable#<init>#()V ### 182: java/util/Dictionary#put#(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object; ### 182: java/lang/Class#getName#()Ljava/lang/String; ### 182: java/lang/Class#getName#()Ljava/lang/String; ### 185: org/osgi/framework/BundleContext#registerService#([Ljava/lang/String;Ljava/lang/Object;Ljava/util/Dictionary;)L org/osgi/framework/ServiceRegistration; ### 184: org/dyndns/soundi/utils/Util#sendMessage#(Lorg/dyndns/soundi/utils/Util$Component;Ljava/lang/String;)V @@@ 1: stop#(Lorg/osgi/framework/BundleContext;)V#null~[java/lang/Exception] @@@ 0: <init>#(Lorg/osgi/framework/BundleContext;)V#null~null ### 183: java/lang/Object#<init>#()V @@@ 1: play#(Ljava/io/InputStream;Lorg/dyndns/soundi/portals/interfaces/Song;)V#null~null ### 184: javax/sound/sampled/AudioSystem#getAudioFileTypes#()[Ljavax/sound/sampled/AudioFileFormat$Type; ### 182: javax/sound/sampled/AudioFileFormat$Type#getExtension#()Ljava/lang/String; ### 182: java/io/PrintStream#println#(Ljava/lang/String;)V ### 184: javax/sound/sampled/AudioSystem#getAudioInputStream#(Ljava/io/InputStream;)Ljavax/sound/sampled/AudioInputStrea m; ### 182: java/lang/Class#getName#()Ljava/lang/String; ### 184: java/util/logging/Logger#getLogger#(Ljava/lang/String;)Ljava/util/logging/Logger; ### 182: java/util/logging/Logger#log#(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V ### 182: java/lang/Class#getName#()Ljava/lang/String; ### 184: java/util/logging/Logger#getLogger#(Ljava/lang/String;)Ljava/util/logging/Logger; ### 182: java/util/logging/Logger#log#(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Throwable;)V ### 182: javax/sound/sampled/AudioInputStream#getFormat#()Ljavax/sound/sampled/AudioFormat; ### 182: javax/sound/sampled/AudioFormat#getSampleRate#()F ### 182: javax/sound/sampled/AudioFormat#getChannels#()I ### 182: javax/sound/sampled/AudioFormat#getChannels#()I ### 182: javax/sound/sampled/AudioFormat#getSampleRate#()F ### 183: javax/sound/sampled/AudioFormat#<init>#(Ljavax/sound/sampled/AudioFormat$Encoding;FIIIFZ)V ### 184: javax/sound/sampled/AudioSystem#getAudioInputStream#(Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/Audi oInputStream;)Ljavax/sound/sampled/AudioInputStream; ### 183: org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#rawplay#(Ljavax/sound/sampled/AudioFormat;Ljavax/sou nd/sampled/AudioInputStream;Lorg/dyndns/soundi/portals/interfaces/Song;)V @@@ 1: pause#()V#null~null @@@ 1: stop#()V#null~null @@@ 1: handleEvent#(Lorg/osgi/service/event/Event;)V#null~null @@@ 2: rawplay#(Ljavax/sound/sampled/AudioFormat;Ljavax/sound/sampled/AudioInputStream;Lorg/dyndns/soundi/portals/interf aces/Song;)V#null~null ### 183: org/dyndns/soundi/soundboxplayerengine/DefaultPlayerEngine#getLine#(Ljavax/sound/sampled/AudioFormat;)Ljavax/so und/sampled/SourceDataLine; ### 185: javax/sound/sampled/SourceDataLine#start#()V ### 185: javazoom/spi/PropertiesContainer#properties#()Ljava/util/Map; ### 185: java/util/Map#get#(Ljava/lang/Object;)Ljava/lang/Object; ### 182: java/lang/Long#longValue#()J ### 185: java/util/Map#get#(Ljava/lang/Object;)Ljava/lang/Object; ### 182: java/lang/Long#longValue#()J ### 182: javax/sound/sampled/AudioInputStream#read#([BII)I ### 185: javax/sound/sampled/SourceDataLine#write#([BII)I ### 185: javax/sound/sampled/SourceDataLine#drain#()V ### 185: javax/sound/sampled/SourceDataLine#stop#()V ### 185: javax/sound/sampled/SourceDataLine#close#()V ### 182: java/lang/Exception#printStackTrace#()V @@@ 2: getLine#(Ljavax/sound/sampled/AudioFormat;)Ljavax/sound/sampled/SourceDataLine;#null~[javax/sound/sampled/LineUna vailableException] ### 183: javax/sound/sampled/DataLine$Info#<init>#(Ljava/lang/Class;Ljavax/sound/sampled/AudioFormat;)V ### 184: javax/sound/sampled/AudioSystem#getLine#(Ljavax/sound/sampled/Line$Info;)Ljavax/sound/sampled/Line; ### 185: javax/sound/sampled/SourceDataLine#open#(Ljavax/sound/sampled/AudioFormat;)V thats also what i get when i try to use dynamic weaving (which would be much nicer) i thought maybe i just need to add a special line to the SPI-Consumer: header like: SPI-Consumer: javax.sound.* but thats not working, it then complains that it requires a class and a method, but i have no idea how to declare this as there is no documentation thanks in advance.
