Elvy wrote:
I've done some research and found interesting things.
1 : For my example to work, I should have put
<Bundle-NativeCode>LcdTimer.dll;osname=WindowsXP;processor=x86</Bundle-NativeCode>.
Can we say that the parameters osname and processor are, among the all
others, the only mandatory ones? Or does OSGi framework simply needs a
non-ambiguous clause?
Yes, I think those are the important one.
2 : OSGi r4 clearly stats that the osname Win32 is an alias for all windows
platforms. Felix does not accept this alias. For my case to work, using
felix 1.0.1, I need to use exactly osname=WindowsXP (beware of case
sensitivity!).
Have Felix guys envisaged to strictly comply to OSGi r4 specs? Due to the
context of this question, I'm only talking about Bundle-NativeCode
parameters.
That's the goal.
Looking at the code in R4LibraryClause I see this method:
public static String normalizeOSName(String value)
{
value = value.toLowerCase();
if (value.startsWith("win"))
{
String os = "win";
if (value.indexOf("32") >= 0 || value.indexOf("*") >= 0)
{
os = "win32";
}
...
So basically, it gets the lowercase version of the value, checks to see
if its starts with "win" and checks to see if the string contains
"32"...if so, it normalizes the value to "win32"...seems like it should
be working. Could you verify that it is not...once verified, please open
a JIRA issue against the framework component to track the bug. Thanks
for the feedback.
-> richard
Page 93 of the r4 specs, there's a listing of all the parameter values &
aliases defined by the OSGi alliance.
Cheers all,
Elvy.
Elvy wrote:
Hi all,
I need to load .dll or .so libraries but I just don't succeed. Let's focus
on the windows platform for the moment.
my pom looks like this, for the maven-bundle-plugin:
__
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>1.1.0-SNAPSHOT</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Bundle-Name>Ted</Bundle-Name>
<Bundle-Version>${pom.version}</Bundle-Version>
<Private-Package>com.thalesgroup.ted</Private-Package>
<Export-Package>
com.thalesgroup.ted.openapi.*;version:=0.1,
com.jidesoft.*;version:=2.2.1.05,
org.apache.log4j.*;version:=1.2.14
</Export-Package>
<Import-Package>
*;resolution:=optional,
</Import-Package>
<Embed-Dependency>*;scope=compile|runtime;inline=false</Embed-Dependency>
<Embed-Transitive>true</Embed-Transitive>
<Bundle-Activator>com.thalesgroup.ted.TedActivator</Bundle-Activator>
<Include-Resource>native/win32/LcdTimer.dll</Include-Resource>
<Bundle-NativeCode>
/LcdTimer.dll
</Bundle-NativeCode>
</instructions>
</configuration>
</plugin>
__
I checked the resulting jar and it does contain the .dll in the root
directory.
When ran in Felix, and I get the following...
__
Welcome to Felix.
=================
org.osgi.framework.BundleException: Unable to select a native library
clause.
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getSelectedLibraryClause(ManifestParser.java:337)
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getLibraries(ManifestParser.java:294)
at org.apache.felix.framework.Felix.createModule(Felix.java:3351)
at
org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3277)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2231)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2145)
at
org.apache.felix.framework.Felix.processAutoProperties(Felix.java:3667)
at org.apache.felix.framework.Felix.start(Felix.java:803)
at org.apache.felix.main.Main.main(Main.java:195)
ERROR: Auto-properties install. (org.osgi.framework.BundleException: Could
not create bundle object.)
org.osgi.framework.BundleException: Unable to select a native library
clause.
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getSelectedLibraryClause(ManifestParser.java:337)
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getLibraries(ManifestParser.java:294)
at org.apache.felix.framework.Felix.createModule(Felix.java:3351)
at
org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3277)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2231)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2145)
at
org.apache.felix.framework.Felix.processAutoProperties(Felix.java:3667)
at org.apache.felix.framework.Felix.start(Felix.java:803)
at org.apache.felix.main.Main.main(Main.java:195)
org.osgi.framework.BundleException: Unable to select a native library
clause.
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getSelectedLibraryClause(ManifestParser.java:337)
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getLibraries(ManifestParser.java:294)
at org.apache.felix.framework.Felix.createModule(Felix.java:3351)
at
org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3277)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2231)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2145)
at
org.apache.felix.framework.Felix.processAutoProperties(Felix.java:3699)
at org.apache.felix.framework.Felix.start(Felix.java:803)
at org.apache.felix.main.Main.main(Main.java:195)
ERROR: Auto-properties start. (org.osgi.framework.BundleException: Could
not create bundle object.)
org.osgi.framework.BundleException: Unable to select a native library
clause.
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getSelectedLibraryClause(ManifestParser.java:337)
at
org.apache.felix.framework.util.manifestparser.ManifestParser.getLibraries(ManifestParser.java:294)
at org.apache.felix.framework.Felix.createModule(Felix.java:3351)
at
org.apache.felix.framework.Felix.createBundleInfo(Felix.java:3277)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2231)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2145)
at
org.apache.felix.framework.Felix.processAutoProperties(Felix.java:3699)
at org.apache.felix.framework.Felix.start(Felix.java:803)
at org.apache.felix.main.Main.main(Main.java:195)
DEBUG: WIRE: 1.0 -> org.ungoverned.osgi.service.shell -> 1.0
DEBUG: WIRE: 1.0 -> org.osgi.service.startlevel -> 0
DEBUG: WIRE: 1.0 -> org.apache.felix.shell -> 1.0
DEBUG: WIRE: 1.0 -> org.osgi.framework -> 0
DEBUG: WIRE: 1.0 -> org.osgi.service.packageadmin -> 0
DEBUG: WIRE: 2.0 -> org.apache.felix.shell -> 1.0
DEBUG: WIRE: 2.0 -> org.osgi.framework -> 0
-> DEBUG: WIRE: 3.0 -> org.osgi.framework -> 0
DEBUG: WIRE: 3.0 -> org.osgi.service.obr -> 3.0
DEBUG: WIRE: 3.0 -> org.apache.felix.shell -> 1.0
__
Do I need to explicitly configure RuntimePermission[loadLibrary.<library
name>] as it is said in the OSGi r4 core specification (page 58 of the
pdf).
-----
Tell me something you don't know!
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]