Hi,

On 16.10.2010, at 14:47, Thiébault Benoît wrote:

> 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

I just deployed it on apache.snapshots:
https://repository.apache.org/content/repositories/snapshots/org/apache/felix/org.apache.felix.ipojo.manipulator/1.7.0-SNAPSHOT/

Regards,

Clement

> 
> 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