JNI c++ Proxyklasse
- 
					
					
					
					
 Hallo Leute, wir schreiben gerade eine Proxyklasse für JNI um quasi die C++ Quellcode in Java nutzen zu können. 
 Ich hoffe jemand von euch kennt sich mit JNI aus!!Folgendes Problem: 
 Die C++ und die Java Klassen sind alle angelegt und werden Fehlerfrei kompiliertJNIEXPORT jstring JNICALL Java_de_tuilmenau_ics_frogger_emulator_PacketIpWrapper_GetSourceIpAdr (JNIEnv *, jobject) { std::string GetSourceIpAdr(); }Die Methode ist jetzt mal nur Beispielhaft. Die anderen Methoden sehen entsprechend aus. package de.tuilmenau.ics.frogger.emulator.tests; import de.tuilmenau.ics.frogger.emulator.*; import java.lang.String; public class TestIp { TestIp() { System.out.println("Ip Packet"); PacketIpWrapper test = new PacketIpWrapper(); char tData ='1'; test.SetIpSourceAdr("127.0.0.1"); test.SetIpDestinationAdr("127.0.1.1"); test.SetIpTimeToLive((byte)8); test.SetIpTypeofService((byte)5); test.SetIpPayload(tData, Integer.parseInt(String.valueOf(tData))); test.Send(); System.out.println("Destination adress:"+test.GetDestinationIpAdr()); System.out.println("Source adress:"+test.GetSourceIpAdr()); } }Kompiliere ich jetzt quasi die Main die die gerade gezeigt Java Methode aufruft kommt folgender Fehler: Exception in thread "main" java.lang.NullPointerException 
 at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:403)
 at java.lang.StringBuilder.append(StringBuilder.java:136)
 at de.tuilmenau.ics.frogger.emulator.tests.TestIp.<init>(TestIp.java:17)
 at de.tuilmenau.ics.frogger.emulator.tests.testemain.main(testemain.java:12)Hier nochmal die Main dazu: package de.tuilmenau.ics.frogger.emulator.tests; import de.tuilmenau.ics.frogger.emulator.*; import de.tuilmenau.ics.frogger.emulator.tests.*; public class testemain { static { System.loadLibrary("emulatorplugin"); } public static void main(String[] args) { TestIp TI = new TestIp(); TestTcp TT = new TestTcp(); TestUdp TU = new TestUdp(); TestEthernet TE = new TestEthernet(); TestIcmpEcho TIE = new TestIcmpEcho(); System.out.println("=============Receiving============="); PacketTcp TCP = new PacketTcp(); TCP.PrepareReceive("", 3000,true);//wait for 3 seconds TCP.Receive(); TCP.PrintHeaderTcp(true); PacketUdpWrapper UDP = new PacketUdpWrapper(); UDP.PrepareReceive("", 3000,true);//wait for 3 seconds UDP.Receive(); UDP.PrintHeaderUdp(true); } }Könnt ihr mir da irgendwie helfen ? Im Internet gibt es keine wirklichen Beschreibungen wie diese Klassen auszusehen haben. Da wird immer nur geschrieben " Ja wie die aussehn wird hier jetzt nicht näher behandelt" Vielen Dank schonmal! 
 
- 
					
					
					
					
 Wenn das nicht mal eine Java Frage ist... Ich sehe null C++ (abgesehen von eine std::string)... 
 
- 
					
					
					
					
 std::string GetSourceIpAdr();ist eine Funktionsdeklaration. Es ist wenig verwunderlich, dass eine Funktion, der ein return-Statement fehlt, keinen jstring zurückgibt, wie Java ihn verwenden könnte. Auch kennt Java std::string nicht. Meintest du vielleicht return env->NewStringUTF(GetSourceIpAdr().c_str());? 
 
- 
					
					
					
					
 Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Java verschoben. Im Zweifelsfall bitte auch folgende Hinweise beachten: 
 C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.