Thank you Clément for the quick fix.

On what repository can I find iPOJO 1.7-SNAPSHOT?

Currently, Maven can't find one of the required artifacts

Kind regards,

Benoît

----------
1) org.apache.felix:org.apache.felix.ipojo.manipulator:jar:1.7.0-SNAPSHOT

  Try downloading the file manually from the project website.


Le 15 oct. 2010 à 20:15, Clement Escoffier a écrit :

> Hi,
> 
> So first it was an iPOJO issue 
> (https://issues.apache.org/jira/browse/FELIX-2664). I've fixed it in the 
> trunk. To check,  compile the manipulator form the iPOJO trunk and configure 
> the maven-ipojo-plugin with:
> <plugin>
>       <groupId>org.apache.felix</groupId>
>       <artifactId>maven-ipojo-plugin</artifactId>
>       <executions>
>               <execution>
>                       <goals>
>                               <goal>ipojo-bundle</goal>
>                       </goals>
>               </execution>
>       </executions>
>       <dependencies>
>               <dependency>
>                       
> <artifactId>org.apache.felix.ipojo.manipulator</artifactId>
>                       <groupId>org.apache.felix</groupId>
>                       <version>1.7.0-SNAPSHOT</version>
>               </dependency>
>       </dependencies>
> </plugin>
> 
> Regards,
> 
> Clement
> 
> On 12.10.2010, at 19:48, Clement Escoffier wrote:
> 
>> Hi,
>> 
>> Could you send me your code or (better) a simplified version. We have code 
>> using JNI and iPOJO but it's not integrated in the test suite (shame on 
>> me...).
>> It probably comes from an issue during the manipulation of the native 
>> methods. 
>> 
>> Regards,
>> 
>> Clement
>> 
>> On 12.10.2010, at 14:51, Thiébault Benoît wrote:
>> 
>>> I tried.
>>> Still got the same error.
>>> 
>>> Ben
>>> 
>>> Le 12 oct. 2010 à 14:44, Derek Baum a écrit :
>>> 
>>>> Try putting System.loadLibrary() in a static block, rather than in the
>>>> start() method.
>>>> 
>>>> public class HelloWorld {
>>>> static {
>>>>  System.loadLibrary("HelloWorld");
>>>> }
>>>> ...
>>>> }
>>>> 
>>>> Derek
>>>> 
>>>> 
>>>> 2010/10/12 Thiébault Benoît <[email protected]>
>>>> 
>>>>> This is definitely an iPOJO problem: I just used an OSGi BundleActivator
>>>>> and it works...
>>>>> 
>>>>> Ben
>>>>> 
>>>>> Le 12 oct. 2010 à 12:30, Derek Baum a écrit :
>>>>> 
>>>>>> I doubt this problem is related to iPOJO, but it may be worth factoring
>>>>> this
>>>>>> out of the equation by testing with a BundleActivator instead of iPOJO.
>>>>> It
>>>>>> may still fail, but you may get a more meaningful exception.
>>>>>> 
>>>>>> I created a Mac native bundle about 6 months ago, and was caught out by
>>>>> the
>>>>>> .jnilib extension, which was required on OSX 10.6.3.
>>>>>> 
>>>>>> Derek
>>>>>> 
>>>>>> 
>>>>>> 2010/10/12 Thiébault Benoît <[email protected]>
>>>>>> 
>>>>>>> Hi Derek,
>>>>>>> 
>>>>>>> I tried to run it under Linux (changing the Bundle-NativeCode
>>>>> accordingly)
>>>>>>> and got the same result.
>>>>>>> 
>>>>>>> The jnilib extension was mandatory in MacOSX early days, it is now
>>>>> supposed
>>>>>>> to supports both (
>>>>>>> 
>>>>> http://markmail.org/message/cksb24oiwjszohvl#query:jnilib%20dylib+page:1+mid:nvmhqaimybukzg4l+state:results
>>>>>>> ).
>>>>>>> 
>>>>>>> Anyway, if the problem was here, it would crash when using "java
>>>>>>> -Djava.library.path=./lib org.test.jni.HelloWorld" as well, which is not
>>>>> the
>>>>>>> case.
>>>>>>> 
>>>>>>> Regarding the OS name, I tried to use MacOSX instead of "Mac OS X" and
>>>>>>> still got the same error. On old equinox versions (prior 3.3 I think),
>>>>> the
>>>>>>> MacOSX alias was not recognized, this is why I chose to be conservative
>>>>> at
>>>>>>> first and used "Mac OS X" instead, which was supported.
>>>>>>> 
>>>>>>> Kind regards,
>>>>>>> 
>>>>>>> Ben
>>>>>>> 
>>>>>>> Le 12 oct. 2010 à 11:57, Derek Baum a écrit :
>>>>>>> 
>>>>>>>> System.loadLibrary() on OSX expects the shared library to have a
>>>>> .jnilib
>>>>>>>> extension.
>>>>>>>> 
>>>>>>>> So try renaming libHelloWorld.dylib to libHelloWorld.jnilib and adjust
>>>>>>> the
>>>>>>>> Bundle-NativeCode header accordingly. I actually use osname=MacOSX, but
>>>>>>> "Mac
>>>>>>>> OS X" may work too.
>>>>>>>> 
>>>>>>>> regards,
>>>>>>>> 
>>>>>>>> Derek
>>>>>>>> 
>>>>>>>> 2010/10/12 Thiébault Benoît <[email protected]>
>>>>>>>> 
>>>>>>>>> Hi everyone,
>>>>>>>>> 
>>>>>>>>> I'm trying a very simple JNI example with iPOJO and OSGi.
>>>>>>>>> Basically, I implemented the HelloWorld example provided by SUN (
>>>>>>>>> http://java.sun.com/docs/books/jni/html/start.html) and packaged it
>>>>> as
>>>>>>> an
>>>>>>>>> iPOJO bundle. The HelloWorld.java file looks like this:
>>>>>>>>> 
>>>>>>>>>> package org.test.jni;
>>>>>>>>>> 
>>>>>>>>>> public class HelloWorld {
>>>>>>>>>> public native void nativePrint();
>>>>>>>>>> 
>>>>>>>>>> public static void main(String[] args) {
>>>>>>>>>> (new HelloWorld()).start();
>>>>>>>>>> }
>>>>>>>>>> 
>>>>>>>>>> public void start() {
>>>>>>>>>> System.loadLibrary("HelloWorld");
>>>>>>>>>> 
>>>>>>>>>> nativePrint();
>>>>>>>>>> }
>>>>>>>>>> 
>>>>>>>>>> public void stop() {
>>>>>>>>>> System.out.println("Goodbye");
>>>>>>>>>> }
>>>>>>>>>> }
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> While the HelloWorld.c is:
>>>>>>>>> 
>>>>>>>>>> #include <jni.h>
>>>>>>>>>> #include <stdio.h>
>>>>>>>>>> #include "org_test_jni_HelloWorld.h"
>>>>>>>>>> 
>>>>>>>>>> JNIEXPORT void JNICALL
>>>>>>>>>> Java_org_test_jni_HelloWorld_nativePrint(JNIEnv *env, jobject obj)
>>>>>>>>>> {
>>>>>>>>>> printf("Hello World!\n");
>>>>>>>>>> return;
>>>>>>>>>> }
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> The BND configuration is:
>>>>>>>>> 
>>>>>>>>>> <plugin>
>>>>>>>>>> <groupId>org.apache.felix</groupId>
>>>>>>>>>> <artifactId>maven-bundle-plugin</artifactId>
>>>>>>>>>> <version>1.4.3</version>
>>>>>>>>>> <extensions>true</extensions>
>>>>>>>>>> <configuration>
>>>>>>>>>>         <instructions>
>>>>>>>>>> 
>>>>>>>>> <Bundle-SymbolicName>${pom.artifactId}</Bundle-SymbolicName>
>>>>>>>>>>                 <Private-Package>org.test.jni</Private-Package>
>>>>>>>>>>                 <Import-Package></Import-Package>
>>>>>>>>>>                 <Export-Package></Export-Package>
>>>>>>>>>>                 <Include-Resource>
>>>>>>>>>>                         {maven-resources},
>>>>>>>>>>                         lib=src/main/c/lib
>>>>>>>>>>                </Include-Resource>
>>>>>>>>>>                 <Bundle-NativeCode>
>>>>>>>>>>                         lib/libHelloWorld.dylib;
>>>>>>>>>>                         osname="Mac OS X"
>>>>>>>>>>                   </Bundle-NativeCode>
>>>>>>>>>>         </instructions>
>>>>>>>>>> </configuration>
>>>>>>>>>> </plugin>
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> and the iPOJO metadata.xml:
>>>>>>>>>> <ipojo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
>>>>>>>>>> xsi:schemaLocation="org.apache.felix.ipojo
>>>>>>>>> http://felix.apache.org/ipojo/schemas/CURRENT/core.xsd";
>>>>>>>>>> xmlns="org.apache.felix.ipojo">
>>>>>>>>>> <component classname="org.test.jni.HelloWorld">
>>>>>>>>>>         <callback transition="validate" method="start"/>
>>>>>>>>>>   <callback transition="invalidate" method="stop"/>
>>>>>>>>>> </component>
>>>>>>>>>> <instance component="org.test.jni.HelloWorld" />
>>>>>>>>>> </ipojo>
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> When I run this sample application via command line, it works:
>>>>>>>>>> java -Djava.library.path=./lib org.test.jni.HelloWorld
>>>>>>>>>> Hello World!
>>>>>>>>> 
>>>>>>>>> But when I load it in OSGi (equinox), I have the following error:
>>>>>>>>>> [ERROR] org.test.jni.HelloWorld : Code attribute in native or
>>>>> abstract
>>>>>>>>> methods in class file org/test/jni/HelloWorld
>>>>>>>>>> java.lang.ClassFormatError: Code attribute in native or abstract
>>>>>>> methods
>>>>>>>>> in class file org/test/jni/HelloWorld
>>>>>>>>>> at java.lang.ClassLoader.defineClass1(Native Method)
>>>>>>>>>> at java.lang.ClassLoader.defineClassCond(ClassLoader.java:632)
>>>>>>>>>> at java.lang.ClassLoader.defineClass(ClassLoader.java:616)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.defineClass(DefaultClassLoader.java:188)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.defineClass(ClasspathManager.java:580)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findClassImpl(ClasspathManager.java:550)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClassImpl(ClasspathManager.java:481)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass_LockClassLoader(ClasspathManager.java:469)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:216)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.loader.BundleLoader.findLocalClass(BundleLoader.java:393)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:469)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:422)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:410)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
>>>>>>>>>> at java.lang.ClassLoader.loadClass(ClassLoader.java:248)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.internal.loader.BundleLoader.loadClass(BundleLoader.java:338)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.framework.internal.core.BundleHost.loadClass(BundleHost.java:232)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.eclipse.osgi.framework.internal.core.AbstractBundle.loadClass(AbstractBundle.java:1197)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.ComponentFactory.loadClass(ComponentFactory.java:220)
>>>>>>>>>> at
>>>>>>>>> org.apache.felix.ipojo.InstanceManager.load(InstanceManager.java:542)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.InstanceManager.createObject(InstanceManager.java:574)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.InstanceManager.getPojoObject(InstanceManager.java:777)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.__stateChanged(LifecycleCallbackHandler.java:156)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.handlers.lifecycle.callback.LifecycleCallbackHandler.stateChanged(LifecycleCallbackHandler.java)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.InstanceManager.setState(InstanceManager.java:441)
>>>>>>>>>> at
>>>>>>>>> org.apache.felix.ipojo.InstanceManager.start(InstanceManager.java:322)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.ComponentFactory.createInstance(ComponentFactory.java:155)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:301)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.IPojoFactory.createComponentInstance(IPojoFactory.java:238)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.InstanceCreator$ManagedInstance.create(InstanceCreator.java:343)
>>>>>>>>>> at
>>>>>>>>> 
>>>>>>> 
>>>>> org.apache.felix.ipojo.InstanceCreator.addInstance(InstanceCreator.java:89)
>>>>>>>>>> at org.apache.felix.ipojo.Extender.parse(Extender.java:269)
>>>>>>>>>> at
>>>>>>>>> org.apache.felix.ipojo.Extender.startManagementFor(Extender.java:208)
>>>>>>>>>> at org.apache.felix.ipojo.Extender.access$600(Extender.java:52)
>>>>>>>>>> at
>>>>>>>>> org.apache.felix.ipojo.Extender$CreatorThread.run(Extender.java:682)
>>>>>>>>>> at java.lang.Thread.run(Thread.java:637)
>>>>>>>>>> [ERROR] org.test.jni.HelloWorld : Code attribute in native or
>>>>> abstract
>>>>>>>>> methods in class file org/test/jni/HelloWorld
>>>>>>>>>> [ERROR] iPOJO Instance Creator : A matching factory was found for
>>>>>>>>> {component=org.test.jni.HelloWorld, instance.name
>>>>>>> =org.test.jni.HelloWorld-0},
>>>>>>>>> but the instantiation failed : The configuration is not correct for
>>>>> the
>>>>>>> type
>>>>>>>>> org.test.jni.HelloWorld : Code attribute in native or abstract methods
>>>>>>> in
>>>>>>>>> class file org/test/jni/HelloWorld
>>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> 
>>>>>>>>> What did go wrong?
>>>>>>>>> 
>>>>>>>>> Kind regards,
>>>>>>>>> Ben
>>>>>>>>> ---------------------------------------------------------------------
>>>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>>>> 
>>>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> ---------------------------------------------------------------------
>>>>>>> To unsubscribe, e-mail: [email protected]
>>>>>>> For additional commands, e-mail: [email protected]
>>>>>>> 
>>>>>>> 
>>>>> 
>>>>> 
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: [email protected]
>>>>> For additional commands, e-mail: [email protected]
>>>>> 
>>>>> 
>>> 
>>> 
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [email protected]
>>> For additional commands, e-mail: [email protected]
>>> 
>> 
> 


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to