| 

.NET C# Java Javascript Exception

3
Ich habe eine einfache Application für das Raspberry Pi geschrieben und zwar das einfach eine LED blinken soll. Um die Bibliotheken von pi4j zu nutzen, habe ich mir osgi plugins und ein osgi fragment erstellt. Die native Bibliothek (*.so) kann aber irgendwie nicht gefunden werden, obwohl sie im fragment enthalten ist....,wenn ich die application auf dem raspberry Pi (Linux) starten will.
Fehlermeldung:


!SESSION 2013-02-10 05:47:41.411 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.7.0_40
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=arm, WS=gtk, NL=de_DE

!ENTRY org.eclipse.osgi 4 0 2013-02-10 05:47:53.059
!MESSAGE Application error
!STACK 1
java.lang.UnsatisfiedLinkError: no libpi4j in java.library.path
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1878)
at java.lang.Runtime.loadLibrary0(Runtime.java:849)
at java.lang.System.loadLibrary(System.java:1087)
at com.pi4j.util.NativeLibraryUser.<clinit>(NativeLibraryUser.java:35)
at eu.gemtec.carepi.app.Application.start(Application.java:25)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:354)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:181)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:606)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:636)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:591)
at org.eclipse.equinox.launcher.Main.run(Main.java:1450)
at org.eclipse.equinox.launcher.Main.main(Main.java:1426)




Ich hatte zuerst einen /lib Ordner, wo die native Bibliothek drin lag. Die ich jedoch gelöscht habe, da ich die Klasse NativeLibraryUser umgeändert habe und alle die diese Laden von ihr erben
public class NativeLibraryUser {

static{
loadLibrary("libpi4j");
}

}

Daher habe ich jetzt die Datei in den Hauptordner geschoben. In der Manifest habe ich angegeben

Bundle-NativeCode: libpi4j.so; osname=Linux;processor=arm
Eclipse-PlatformFilter: (& (osgi.os=Linux) (osgi.arch=arm))



WARUM? Brauche dringend Hilfe!Danke im Voraus!
:)
News:
24.10.2013
tanzverfuehrung 147 8
1 Antwort
1
ich habe es herausgefunden nach stunden :), und zwar:
Darf man beim System.loadLibary nur pi4j angeben!ohne lib, damit es platform unabhänig ist.

Wenn es auf Linux geladen wird, wird dann automatisch "lib" vorgeschrieben :)


public class NativeLibraryUser {

static{
loadLibrary("pi4j");
}

}
24.10.2013
tanzverfuehrung 147 8

Stelle deine Java-Frage jetzt!