java-forum.org - Java programmieren aus Leidenschaft
Java 6 Einstieg und professioneller Einsatz
Alter Preis: 34,90 EUR
Jetzt: 0,00 EUR

zzgl. Versandkosten

Zurück   java-forum.org - Java programmieren aus Leidenschaft > Java - Programmierung > Allgemeine Java-Themen

Allgemeine Java-Themen Allgemeine Themen, die nicht in andere Fachforen und nicht zu den Java Basics passen

Thema geschlossen    
Themen-Optionen Thema durchsuchen Ansicht
Alt 26.04.2007, 09:25   #1 (permalink)
Neuer Benutzer
Bit
 
Registriert seit: 04.04.2007
Fachbeiträge: 5
Abgegebene Danke: 0
Erhielt 0 Danke für 0 Beiträge
Standard Fortran Funktion mit JNI aufrufen: java.lang.UnsatisfiedLink

Hallo!
Ich versuche unter Linux eine einfache Fortran Funktion in Java aufzurufen. Ich verwende dazu JNI und eine C-Funktion als Wrapper. Auf Windows läuft das Programm, aber auf Linux bekomme ich folgende Fehlermeldung:

Code:
Exception in thread "main" java.lang.UnsatisfiedLinkError: /home/alban/lib/libessf.so: /home/alban/lib/libessf.so: undefined symbol: _gfortran_filename
       at java.lang.ClassLoader$NativeLibrary.load(Native Method)
       at java.lang.ClassLoader.loadLibrary0(ClassLoader.java:1751)
       at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1676)
       at java.lang.Runtime.loadLibrary0(Runtime.java:822)
       at java.lang.System.loadLibrary(System.java:992)
       at LoadLib.<clinit>(LoadLib.java:24)
Das Fortran Programm sieht folgendermaßen aus:

Code:
SUBROUTINE essai()

	write(*,*) "coucou en Fortran"

	return
	
	END SUBROUTINE essai
Das Java Programm wie folgt:

Code:
import java.io.*;
public class LoadLib {
    
    /** Creates a new instance of WRubar20 */
    //public LoadLib() { }
    
    
    public static native void f1();
   
    static {System.loadLibrary("essf"); }
    
    public static void main (String args [ ])
    {
        System.out.println("aller, je commence en Java\n");
        new LoadLib().f1();
        System.out.println("ca y est, j'ai fini en Java\n");
    }
    
}
und das C-Programm so:

Code:
#include<stdio.h>
#include<jni.h>
#include"LoadLib.h"


extern void essai_();


JNIEXPORT void JNICALL Java_LoadLib_f1  (JNIEnv * env, jclass cl)
{
printf("coucou en C\n");

essai_();

return;
}

Zum kompilieren und executieren habe ich folgende Befehle verwendet:

Code:
javac LoadLib.java
javah -jni LoadLib
gcc -c sub.f
JNI=/usr/lib/jvm/java-1.5.0-sun-1.5.0.06/include
JNI_LINUX=/usr/lib/jvm/java-1.5.0-sun-1.5.0.06/include/linux
gcc -c  -I$JNI -I$JNI_LINUX LoadLib.c
gcc -o libessf.so -shared -I$JNI -I$JNI_LINUX sub.o LoadLib.o -lg2c
java LoadLib
Unter Windows habe ich noch ein .def File verwendet, aber das wird in Linux eigentlich nicht benötigt. Ich habe schon alles im Netz abgesucht, aber nicht wirklich was gefunden. Ich glaube allerdings, dass es irgendwie mit dem Kompiler zusammenhängen muss. Es wäre super wenn mir einer von Euch weiterhelfen könnte!
Sonja
Sonjaja ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.11.2007, 10:19   #2 (permalink)
Osix2000
Nicht angemeldet
 
Fachbeiträge: n/a
Warum mußt Du eigentlich den Umweg über C gehen ?

Kann man nicht den FortranCode gleich mit Java über JNI ausführen ?

Wer weiß dazu was ?
 
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Alt 08.11.2007, 10:22   #3 (permalink)
Java-Forum Team
Moderator
 
Benutzerbild von thE_29
 
Registriert seit: 11.05.2004
Fachbeiträge: 6.733
Blog-Einträge: 3
Abgegebene Danke: 4
Erhielt 51 Danke für 40 Beiträge
Maybe hat deine so was!

Probiers mal so:
http://ringlord.com/publications/jni-howto/ Der hat beim shared diese lg2c Paramete rnicht..
__________________
Wir machen Fehler aus Versehen, die anderen aus Dummheit. (Gabriel Laub)
Pur Java Registry Reader - http://sourceforge.net/projects/java-registry/
thE_29 ist offline  
Bei Google nach dem markiertem Wort suchen Bei Wikipedia nach dem markiertem Wort suchen Im Forum nach dem markiertem Wort suchen
Thema geschlossen    

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
fortran exe über java ausführen jay Allgemeine Java-Themen 4 08.11.2007 10:23
Geschwindigkeit Fortran und Java Osix2000 Allgemeine Java-Themen 11 08.11.2007 09:44
Fortran nach Java mit f2j Allgemeine Java-Themen 13 01.04.2005 12:34
java funktion in JSP file aufrufen. grill Allgemeine Java-Themen 2 04.11.2004 13:05
C# Funktion in Java aufrufen lukburg Allgemeine Java-Themen 4 19.08.2004 09:50


Lesezeichen

Forumregeln
Es ist Ihnen erlaubt, neue Themen zu verfassen.
Es ist Ihnen erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are aus
Pingbacks are aus
Refbacks are aus


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:35 Uhr.


Powered by vBulletin® Version 3.8.6 (Deutsch)
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.3.2
Thanks for Smilies by smilies.4-user.de