VM crash nach Aufruf von GetFieldID und GetMethodID in JNI

Status
Nicht offen für weitere Antworten.

deathlock

Aktives Mitglied
Hi Leute!

Ich habe folgendes JNI Problem:
Jedes mal wenn ich in meinem C++ Code GetFieldID oder GetMethodID aufrufe, crasht meine JVM.

Das Logfile sieht so aus:

Code:
#
# An unexpected error has been detected by HotSpot Virtual Machine:
#
#  Internal Error (0xe0434f4d), pid=2748, tid=2936
#
# Java VM: Java HotSpot(TM) Client VM (1.5.0_07-b03 mixed mode, sharing)
# Problematic frame:
# C  [kernel32.dll+0x1eb33]
#

---------------  T H R E A D  ---------------

Current thread (0x00a6ad20):  JavaThread "AWT-EventQueue-0" [_thread_in_native, id=2936]

siginfo: ExceptionCode=0xe0434f4d

Registers:
EAX=0x0338f2c0, EBX=0x00000001, ECX=0x000de9b8, EDX=0x00000000
ESP=0x0338f2bc, EBP=0x0338f310, ESI=0x00000000, EDI=0x00000000
EIP=0x7c81eb33, EFLAGS=0x00000246

Top of Stack: (sp=0x0338f2bc)
0x0338f2bc:   000de9b8 e0434f4d 00000001 00000000
0x0338f2cc:   7c81eb33 00000000 791b6fc3 02e8119c
0x0338f2dc:   035920b8 000de9b8 0338f2fc 791be000
0x0338f2ec:   000b3cc0 00000002 035920b8 00000000
0x0338f2fc:   0338f30c 791be015 000b3cc0 035920b8
0x0338f30c:   0338f31c 0338f368 79238b7d e0434f4d
0x0338f31c:   00000001 00000000 00000000 000de9b8
0x0338f32c:   0338f378 00000001 7c81eb33 0338eff0 

Instructions: (pc=0x7c81eb33)
0x7c81eb23:   8d 7d c4 f3 a5 5f 8d 45 b0 50 ff 15 04 15 80 7c
0x7c81eb33:   5e c9 c2 10 00 85 ff 0f 8e e6 d0 fe ff 8b 55 fc 


Stack: [0x03350000,0x03390000),  sp=0x0338f2bc,  free space=252k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C  [kernel32.dll+0x1eb33]
C  [mscorwks.dll+0x88b7d]
C  [mscorwks.dll+0x88b00]
C  [mscorwks.dll+0x88ab4]
C  [mscorwks.dll+0xa8705]
C  [mscorwks.dll+0x27746]
C  0x02dd2f76
j  GUI.JNITestGUI.actionPerformed(Ljava/awt/event/ActionEvent;)V+124
j  javax.swing.AbstractButton.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+84
j  javax.swing.AbstractButton$Handler.actionPerformed(Ljava/awt/event/ActionEvent;)V+5
j  javax.swing.DefaultButtonModel.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+35
j  javax.swing.DefaultButtonModel.setPressed(Z)V+117
j  javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Ljava/awt/event/MouseEvent;)V+35
j  java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j  javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j  java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j  java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
j  java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+477
j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j  java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+304
j  java.awt.LightweightDispatcher.processMouseEvent(Ljava/awt/event/MouseEvent;)Z+139
j  java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
j  java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j  java.awt.EventDispatchThread.pumpOneEventForHierarchy(ILjava/awt/Component;)Z+233
j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j  java.awt.EventDispatchThread.run()V+9
v  ~StubRoutines::call_stub
V  [jvm.dll+0x86401]
V  [jvm.dll+0xdb172]
V  [jvm.dll+0x862d2]
V  [jvm.dll+0x8602f]
V  [jvm.dll+0xa0bcb]
V  [jvm.dll+0x10bdad]
V  [jvm.dll+0x10bd7b]
C  [MSVCRT.dll+0x2a3b0]
C  [kernel32.dll+0xb50b]

Java frames: (J=compiled Java code, j=interpreted, Vv=VM code)
j  Tests.CPPCallsJava.call(I)V+0
j  GUI.JNITestGUI.actionPerformed(Ljava/awt/event/ActionEvent;)V+124
j  javax.swing.AbstractButton.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+84
j  javax.swing.AbstractButton$Handler.actionPerformed(Ljava/awt/event/ActionEvent;)V+5
j  javax.swing.DefaultButtonModel.fireActionPerformed(Ljava/awt/event/ActionEvent;)V+35
j  javax.swing.DefaultButtonModel.setPressed(Z)V+117
j  javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Ljava/awt/event/MouseEvent;)V+35
j  java.awt.Component.processMouseEvent(Ljava/awt/event/MouseEvent;)V+64
j  javax.swing.JComponent.processMouseEvent(Ljava/awt/event/MouseEvent;)V+23
j  java.awt.Component.processEvent(Ljava/awt/AWTEvent;)V+81
j  java.awt.Container.processEvent(Ljava/awt/AWTEvent;)V+18
j  java.awt.Component.dispatchEventImpl(Ljava/awt/AWTEvent;)V+477
j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+42
j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j  java.awt.LightweightDispatcher.retargetMouseEvent(Ljava/awt/Component;ILjava/awt/event/MouseEvent;)V+304
j  java.awt.LightweightDispatcher.processMouseEvent(Ljava/awt/event/MouseEvent;)Z+139
j  java.awt.LightweightDispatcher.dispatchEvent(Ljava/awt/AWTEvent;)Z+50
j  java.awt.Container.dispatchEventImpl(Ljava/awt/AWTEvent;)V+12
j  java.awt.Window.dispatchEventImpl(Ljava/awt/AWTEvent;)V+19
j  java.awt.Component.dispatchEvent(Ljava/awt/AWTEvent;)V+2
j  java.awt.EventQueue.dispatchEvent(Ljava/awt/AWTEvent;)V+46
j  java.awt.EventDispatchThread.pumpOneEventForHierarchy(ILjava/awt/Component;)Z+233
j  java.awt.EventDispatchThread.pumpEventsForHierarchy(ILjava/awt/Conditional;Ljava/awt/Component;)V+26
j  java.awt.EventDispatchThread.pumpEvents(ILjava/awt/Conditional;)V+4
j  java.awt.EventDispatchThread.pumpEvents(Ljava/awt/Conditional;)V+3
j  java.awt.EventDispatchThread.run()V+9
v  ~StubRoutines::call_stub

---------------  P R O C E S S  ---------------

Java Threads: ( => current thread )
  0x031b62a0 JavaThread "TimerQueue" daemon [_thread_blocked, id=2960]
  0x00356828 JavaThread "DestroyJavaVM" [_thread_blocked, id=2764]
=>0x00a6ad20 JavaThread "AWT-EventQueue-0" [_thread_in_native, id=2936]
  0x00a654e8 JavaThread "AWT-Windows" daemon [_thread_in_native, id=2900]
  0x00a65080 JavaThread "AWT-Shutdown" [_thread_blocked, id=2888]
  0x00a63fa8 JavaThread "Java2D Disposer" daemon [_thread_blocked, id=2876]
  0x00a0f550 JavaThread "Low Memory Detector" daemon [_thread_blocked, id=2844]
  0x00a0e250 JavaThread "CompilerThread0" daemon [_thread_blocked, id=2864]
  0x00a0d3c8 JavaThread "Signal Dispatcher" daemon [_thread_blocked, id=2828]
  0x009e1638 JavaThread "Finalizer" daemon [_thread_blocked, id=2832]
  0x009e0b30 JavaThread "Reference Handler" daemon [_thread_blocked, id=2824]

Other Threads:
  0x009de2c8 VMThread [id=2784]
  0x00a10898 WatcherThread [id=2868]

VM state:not at safepoint (normal execution)

VM Mutex/Monitor currently owned by a thread: None

Heap
 def new generation   total 576K, used 287K [0x22a70000, 0x22b10000, 0x22f50000)
  eden space 512K,  43% used [0x22a70000, 0x22aa7de8, 0x22af0000)
  from space 64K, 100% used [0x22af0000, 0x22b00000, 0x22b00000)
  to   space 64K,   0% used [0x22b00000, 0x22b00000, 0x22b10000)
 tenured generation   total 1408K, used 398K [0x22f50000, 0x230b0000, 0x26a70000)
   the space 1408K,  28% used [0x22f50000, 0x22fb3870, 0x22fb3a00, 0x230b0000)
 compacting perm gen  total 8192K, used 200K [0x26a70000, 0x27270000, 0x2aa70000)
   the space 8192K,   2% used [0x26a70000, 0x26aa22a0, 0x26aa2400, 0x27270000)
    ro space 8192K,  63% used [0x2aa70000, 0x2af7ccc8, 0x2af7ce00, 0x2b270000)
    rw space 12288K,  46% used [0x2b270000, 0x2b80b738, 0x2b80b800, 0x2be70000)

Dynamic libraries:
0x00400000 - 0x0040d000 	C:\Program Files\Java\jre1.5.0_07\bin\javaw.exe
0x7c900000 - 0x7c9b0000 	C:\WINDOWS\system32\ntdll.dll
0x7c800000 - 0x7c8f4000 	C:\WINDOWS\system32\kernel32.dll
0x77dd0000 - 0x77e6b000 	C:\WINDOWS\system32\ADVAPI32.dll
0x77e70000 - 0x77f01000 	C:\WINDOWS\system32\RPCRT4.dll
0x77d40000 - 0x77dd0000 	C:\WINDOWS\system32\USER32.dll
0x77f10000 - 0x77f57000 	C:\WINDOWS\system32\GDI32.dll
0x77c10000 - 0x77c68000 	C:\WINDOWS\system32\MSVCRT.dll
0x6d6c0000 - 0x6d857000 	C:\Program Files\Java\jre1.5.0_07\bin\client\jvm.dll
0x76b40000 - 0x76b6d000 	C:\WINDOWS\system32\WINMM.dll
0x6d280000 - 0x6d288000 	C:\Program Files\Java\jre1.5.0_07\bin\hpi.dll
0x76bf0000 - 0x76bfb000 	C:\WINDOWS\system32\PSAPI.DLL
0x6d690000 - 0x6d69c000 	C:\Program Files\Java\jre1.5.0_07\bin\verify.dll
0x6d300000 - 0x6d31d000 	C:\Program Files\Java\jre1.5.0_07\bin\java.dll
0x6d6b0000 - 0x6d6bf000 	C:\Program Files\Java\jre1.5.0_07\bin\zip.dll
0x6d000000 - 0x6d167000 	C:\Program Files\Java\jre1.5.0_07\bin\awt.dll
0x73000000 - 0x73026000 	C:\WINDOWS\system32\WINSPOOL.DRV
0x76390000 - 0x763ad000 	C:\WINDOWS\system32\IMM32.dll
0x774e0000 - 0x7761d000 	C:\WINDOWS\system32\ole32.dll
0x73760000 - 0x737a9000 	C:\WINDOWS\system32\ddraw.dll
0x73bc0000 - 0x73bc6000 	C:\WINDOWS\system32\DCIMAN32.dll
0x73940000 - 0x73a10000 	C:\WINDOWS\system32\D3DIM700.DLL
0x6d240000 - 0x6d27f000 	C:\Program Files\Java\jre1.5.0_07\bin\fontmanager.dll
0x74720000 - 0x7476b000 	C:\WINDOWS\system32\MSCTF.dll
0x7c9c0000 - 0x7d1d5000 	C:\WINDOWS\system32\shell32.dll
0x77f60000 - 0x77fd6000 	C:\WINDOWS\system32\SHLWAPI.dll
0x773d0000 - 0x774d2000 	C:\WINDOWS\WinSxS\x86_Microsoft.Windows.Common-Controls_6595b64144ccf1df_6.0.2600.2180_x-ww_a84f1ff9\comctl32.dll
0x5d090000 - 0x5d127000 	C:\WINDOWS\system32\comctl32.dll
0x10000000 - 0x1003c000 	C:\Documents and Settings\atp01938\workspace\JNITest\JNITest.dll
0x79170000 - 0x79196000 	C:\WINDOWS\system32\mscoree.dll
0x791b0000 - 0x79416000 	c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\mscorwks.dll
0x7c340000 - 0x7c396000 	c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\MSVCR71.dll
0x79040000 - 0x79085000 	c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\fusion.dll
0x79780000 - 0x7998c000 	c:\windows\microsoft.net\framework\v1.1.4322\mscorlib.dll
0x79990000 - 0x79ccc000 	c:\windows\assembly\nativeimages1_v1.1.4322\mscorlib\1.0.5000.0__b77a5c561934e089_bafb18af\mscorlib.dll
0x79430000 - 0x7947d000 	c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\MSCORJIT.DLL
0x51a70000 - 0x51af0000 	c:\WINDOWS\Microsoft.NET\Framework\v1.1.4322\diasymreader.dll
0x20000000 - 0x202c5000 	C:\WINDOWS\system32\xpsp2res.dll
0x03410000 - 0x03417000 	C:\Program Files\Lotus\Sametime Client\autoaway.dll
0x6d4c0000 - 0x6d4d3000 	C:\Program Files\Java\jre1.5.0_07\bin\net.dll
0x71ab0000 - 0x71ac7000 	C:\WINDOWS\system32\WS2_32.dll
0x71aa0000 - 0x71aa8000 	C:\WINDOWS\system32\WS2HELP.dll
0x6d4e0000 - 0x6d4e9000 	C:\Program Files\Java\jre1.5.0_07\bin\nio.dll

VM Arguments:
jvm_args: -Xcheck:jni
java_command: GUI.JNITestGUI
Launcher Type: SUN_STANDARD

Environment Variables:
CLASSPATH=.;C:\Program Files\J-Integra\com\lib\jintegra.jar;C:\EZJcom\ezjcom17.jar;C:\Documents and Settings\atp01938\Desktop\EZJ\JSmIaCore.jar
PATH=C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Oracle\Ora81\bin;C:\Program Files\Oracle\jre\1.1.7\bin;C:\Program Files\Rational\ClearCase\bin;C:\Program Files\Rational\common;C:\Program Files\Rational\Common\;D:\Application_data\Notes;K:\Utilities\;C:\PROGRA~1\ULTRAE~1;C:\Program Files\Java\jdk1.5.0_06\bin;C:\Program Files\J-Integra\com\bin;C:\Program Files\Oracle\jre\1.1.7\bin;C:\Program Files\Oracle\jre\1.1.7\jre\bin
USERNAME=atp01938
LD_LIBRARY_PATH=C:\Documents and Settings\atp01938\workspace\JNITest
OS=Windows_NT
PROCESSOR_IDENTIFIER=x86 Family 15 Model 4 Stepping 1, GenuineIntel



---------------  S Y S T E M  ---------------

OS: Windows XP Build 2600 Service Pack 2

CPU:total 2 family 15, cmov, cx8, fxsr, mmx, sse, sse2, ht

Memory: 4k page, physical 1038404k(439552k free), swap 2499896k(1971488k free)

vm_info: Java HotSpot(TM) Client VM (1.5.0_07-b03) for windows-x86, built on May  3 2006 01:04:38 by "java_re" with MS VC++ 6.0

Kann mir jemand helfen?

Danke schonmal im voraus.

LG,
deathlock.
 

thE_29

Top Contributor
Mh.. könnte ein Speicherzugriffsfehler sein im C Code!

Wenn dein C Code nen Fehler liefert ohne das er behandelt wird, gibt es solche Fehler!
 

deathlock

Aktives Mitglied
ja, aber mein C++ code macht doch nichts anderes als das

Code:
jclass icls = env->GetObjectClass(obj);
jmethodID jmid = env->GetStaticMethodID(icls, "callback", "(I)V");

und in der zweiten Zeile gibts schon den crash.
 

thE_29

Top Contributor
Wieso holst du dir nochmals die Klasse?!

Da stimmt doch eindeutig was net..

Du holst dir die Klasse vom obj was ist aber obj?

Dann sagst du getStatic... mit der Klasse von dem übergebenen Objekt? das kann schon net gehn oder willst du wirklich von dem Objekt die Methode callback oder von deiner Klasse?!

mainMethod = (*env)->GetStaticMethodID(env, helloWorldClass, "main", "([Ljava/lang/String;)V");


Irgendwie finde ich einen Aufruf so wie du den hast von GetStaticMethod eigentlich nirgends im Inet (du hast nur 3 params, jeder andere hat 4)
 

deathlock

Aktives Mitglied
Hi!

Sorry, static ist natürlich falsch. Der komplette C++ Code sieht so aus:

Code:
#include <jni.h>
#include <iostream>
#include "Tests_CPPCallsJava.h"

JNIEXPORT void JNICALL Java_Tests_CPPCallsJava_call (JNIEnv *env, jobject obj, jint num)
{
	//Get class of called object
	jclass icls = env->GetObjectClass(obj);

	jmethodID jmid = env->GetMethodID(icls, "callback", "(I)V");
	if(jmid == 0)
	{
		std::cout << "jmid = NULL" << std::endl; 
	}

	env->CallVoidMethod(obj, jmid);
	std::cout << "--- Native Code ---" << std::endl;
}

Nur drei Parameter, weil es C++ ist und nicht C.

Danke.

lg,
deathlock.
 

thE_29

Top Contributor
Die Methoden in Java sind als nicht static deklariert oder?

Weil wenns static sind, sehen die Header anders aus!

Code:
JNIEXPORT jint JNICALL Java_at_dstore_bo_WinServiceHandler_handleService
  (JNIEnv *env, jclass cl, jstring mach,jstring srv , jint cod, jstring par)

So als Bsp..

Aber das nur so am Rande!

Hey cool: http://www.science.uva.nl/ict/ossdocs/java/tutorial/native1.1/implementing/method.html

Ist das ein Lernbsp ;)

Sieht dein Java Header eh so aus:

private void callback(int depth) { //code}



Nachtrag: naja da haben wir dein Problem!

Das hier sagt: env->GetMethodID(icls, "callback", "(I)V");

suche nach Methode void callback(jint)

Du rufst nachher aber sowas auf:
env->CallVoidMethod(obj, jmid);

das würde eine void callback() Methode aufrufen weil du hinten kein int Wert mitübergibst ^^

Siehe lern Beispiel, der übergibt hinten einen Wert!
 

deathlock

Aktives Mitglied
Cool. Ja ist ein Beispiel aus einem Tutorial, allerdings einem deutschen :)

Ja mein Header sieht so aus, ist allerdings public und nicht private.

Ja, stimmt static war es nicht, dass war ein Überbleibsel vom Ausprobieren. Hab jetzt Parameter gecheckt, scheinen alle OK zu sein.

Hast du eine Idee?

Vielleicht liegt es irgendwie an den Einstellungen der JVM, es tritt ja wie gesagt bei GetFieldID und bei GetMethodID auf. Im Code kann ja eigentlich nichts sein, oder?
 

deathlock

Aktives Mitglied
Ja, aber den int Wert muss ich doch erst bei CallVoidMethod übergeben und nicht schon bei GetMethodID.
So weit komme ich ja leider garnicht.
 

thE_29

Top Contributor
env->CallVoidMethod(obj, jmid);

Wo gibst du da nen int Wert mit?

Zeig mir dasmal..


Und zwecks Compiler: In C gab/Gibts schon immer Funktionen mit beliebiger Anzahl an Parametern.. (bestes Bsp ist prinf)


Von daher, ist der Aufruf ja richtig, weil


env->CallVoidMethod(obj, jmid); == ruft callback() auf

env->CallVoidMethod(obj, jmid,1); == ruft callback(1) auf

env->CallVoidMethod(obj, jmid,1,2,3); == ruft callback(1,2,3) auf

^^
 

deathlock

Aktives Mitglied
Ja, stimmt hast recht, das ist falsch.
Aber wie gesagt, ich komme ja leider nichtmal so weit, der JVM crash findet ja schon vorher statt.
 

thE_29

Top Contributor
Mhm.. vielleicht bekommt er das this von dem actionListner!


Sag mal im Java Programm "Klasse.this.testcallback(0)"

Vielleicht gehts ja dann!
 

thE_29

Top Contributor
Bsp.:

Java Code:
Code:
public class JNITest
{
private native void test(int i);
public JNITest()
{
System.out.println("Calling natvie test with 6");
test(6);

}
private void callback(int b)
{
System.out.println("Callback Methode mit: " + b);

}
public static void main(String args[])
{
new JNITest();

}

static {
System.loadLibrary("JNITest");
}

}

C++ Code - main.cpp:
Code:
#include "JNITest.h"

#include <stdio.h>


JNIEXPORT void JNICALL Java_JNITest_test
  (JNIEnv *env, jobject obj, jint wert)


{

	jclass icls = env->GetObjectClass(obj);

	jmethodID jmid = env->GetMethodID(icls, "callback", "(I)V");

	if(jmid == 0)
	{
		printf("Fehler konnte Methode nicht finden!!");
		return;
	}

	env->CallVoidMethod(obj, jmid, (int)wert); 
}

JNITest.h:

Code:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class JNITest */

#ifndef _Included_JNITest
#define _Included_JNITest
#ifdef __cplusplus
extern "C" {
#endif
/*
 * Class:     JNITest
 * Method:    test
 * Signature: (I)V
 */
JNIEXPORT void JNICALL Java_JNITest_test
  (JNIEnv *, jobject, jint);

#ifdef __cplusplus
}
#endif
#endif


Ausgabe:
C:\tmp\java-forum\jni>javac JNITest.java

C:\tmp\java-forum\jni>javah -jni -classpath . JNITest

C:\tmp\java-forum\jni>java JNITest
Calling natvie test with 6
Callback Methode mit: 6
 

deathlock

Aktives Mitglied
Hi!

Hab jetzt dein Beispiel von oben eins zu eins übernommen und es passiert wieder das selbe. Ich glaube langsam nicht dass es am Code liegt, es ist vielleicht irgendeine Rahmenbedingung/Einstellung die bei mir nicht passt. Kann das sein? Was könnte es sein?

Thx.
 

thE_29

Top Contributor
Du hast wirklich mein Bsp 1:1 übernommen?

Also ohne packages und dgl?

Welchen C Compiler hast du?

Java Version?
 

deathlock

Aktives Mitglied
Ja genau, so wie es hier steht. Es kommt aber immer, egal aus welchem Tutorial oder welche Beispiel ich nehme, ich muss nur GetFieldID oder GetMethodID aufrufen und es passiert.

Ich verwende das MS Visual Studio 2003 und eclipse mit jdk1.5.0_07
 

thE_29

Top Contributor
Kommst du irgendwie an den MS VC++ 6.0 Compiler ran?

Anscheinend spinnt sich diese Studio Net Umgebungen nur noch aus...
 

deathlock

Aktives Mitglied
yuhuuu!!! es haut hin!
wenn ich jetzt nur noch rausfinden könnte was das problem ist.


Es liegt doch sicher an den Compiler Settings im VS. Da muss man doch etwas ändern können damit es auch mit VS 2003 geht.
 

thE_29

Top Contributor
Sag ich ja, das is diese doofe Studio .NET Umgebung...

Da hat MS lauter Speicherbereinigungslogiken und sonstigen Oberbledsinn eingebaut das die hälfte nima geht..

Bei mir haben 3 von 5 Programmen einen Speicherzugriffsfehler?!

Beim MSVC++ 6.0 hingegen nicht..

Wie groß isn deine DLL wenn du sie von der C Datei oben ersellen lässt!

Ist sie so groß wie meine?
 

deathlock

Aktives Mitglied
deine ist 197kb und meine war 228kb

aber ich hoffe sehr dass sich die compilereinstellungen vom ms2003 so einstellen lassen dass es auch damit funktioniert. ansonsten hab ich ein problem.
 

thE_29

Top Contributor
Das is der Code was oben steht!

C++ Code mit Mischung von C (wegen printf)

mag dieses cout net..
 

deathlock

Aktives Mitglied
*ggg*, ah ok verstehe. ich danke dir vielmals für die mühe und für deine hilfe. hätte das problem sonst sicherlich nicht lösen können.

lg.
 

thE_29

Top Contributor
Desweiteren habe ich mir ein MakeFile generieren lassen..

http://forum.geizhals.at/files/7189/JNITest.mak

In dem makefile musst du jetzt die JBuilder2005\jdk1.4\ Verzeichnisse ersetzen!

4mal include und 2mal lib

Und dann noch den C:\programme\microsoft visual stuio\... lib Eintrag auf deine studio.net Umgebung umbauen! (auch 2mal)


Dann einfach die mak Datei in das gleiche Verzeichnis stellen wie mein C++ Code in dem Thread gepostet. (habe gerade die .h Datei auch reingepostet) => heißt main.cpp (ist c++ code) und JNITest.h ist die Header Datei! (code: http://www.java-forum.org/de/viewtopic.php?p=201346#201346 )

Dann "nmake /f JNITest.mak" in dem Verzeichnis sagen! Wenn deine Studio.NET Umgebung das bin Dir im PATH ist, sollte alles gehen, ansonsten musst du das anpassen!

Die dadurch erstellte DLL (gerade probiert) ist noch kleiner als meine alte!

Funktioniert aber!!

Probier es mal so!

Achja: nmake /f JNITest.mak == nmake /f JNITest.mak CFG="JNITest - Win32 Debug"

Wenn du fertig bist, isses besser das hier zu sagen

nmake /f JNITest.mak CFG="JNITest - Win32 Release"

Die dadurch erstellte DLL ist noch kleiner, da keine debug Informationen mitgespeichert werden!
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Java String to Array = Crash Allgemeine Java-Themen 6
S Java Applet Crash - Keine Exception Allgemeine Java-Themen 8
A JNI: Unerklärlicher Crash beim Aufruf von CallVoidMethod Allgemeine Java-Themen 9
V JNI Call Crash verhindern (abfangen) Allgemeine Java-Themen 2
H Tomcat: JVM Crash ntdll.dll Allgemeine Java-Themen 2
T Java JVM crash verstehen Allgemeine Java-Themen 6
Ernesto95 HTTP Mit JavaScript erzeugte dynamische Webseite auslesen und nach einem Schlüsselwort durchsuchen Allgemeine Java-Themen 6
D Image bewegt sich nicht nach Klicken auf Button Allgemeine Java-Themen 15
I 2D-Grafik Vektor-Grafik über die Zwischenablage nach Adobe Illustrator transferieren Allgemeine Java-Themen 8
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
L 2 Dimensionale ListArray Abfrage nach einem Wert suchen Allgemeine Java-Themen 5
torresbig Url nach Webseiten-Login auslesen & Daten an Webseite senden Allgemeine Java-Themen 9
R Best Practice Erfahrungswerte für eine Migration von JSF nach Angular (oder anderes JS-Framework) Allgemeine Java-Themen 1
OnDemand Ram Freigabe erfolgt nicht nach Prozessende Allgemeine Java-Themen 18
G Geotools Probleme nach PC-Wechsel Allgemeine Java-Themen 6
K Verbesserung der Laufzeit beim Sortieren von Einwohnern nach ihrem Geburtsjahr Allgemeine Java-Themen 0
E Variablen Nach Übergabe einer Variable den Constructor aufrufen Allgemeine Java-Themen 16
I In Java geschriebene Software nach Mac OS portieren Allgemeine Java-Themen 7
M TicTacToe Sound nach jedem Zug Allgemeine Java-Themen 21
I HTML / XHTML Seite nach Excel exportieren. Suche Lib Allgemeine Java-Themen 12
J4n5chmiddi Methoden Website-URL im Browser öffnen nach erfolgreicher Basisauthentifizierung in Java Allgemeine Java-Themen 12
pkm Frage nach eventuellem syntaktischen Zucker bei der Konkatenation von ArrayLists Allgemeine Java-Themen 4
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
H Collections Aktuellen Index generell und nach Sortierung ausgeben Allgemeine Java-Themen 6
Kirby.exe Filename nach bestimmtem Pattern durchsuchen Allgemeine Java-Themen 5
S Wörterliste nach Wörtern mit u durchsuchen und diese auf der Konsole ausgeben lassen Allgemeine Java-Themen 33
W Pdf verwerfen, weil Checkbox nach Unterschrift geaendert wurde Allgemeine Java-Themen 5
G File not found - nach dem Kompilieren Allgemeine Java-Themen 6
S Swing Speichern nach Button-Klick Allgemeine Java-Themen 5
Meeresgott Effizientester Weg um nach der Value einer verschachtelten Map aufzulösen Allgemeine Java-Themen 5
M Java 8 nach Java 6 konvertieren Allgemeine Java-Themen 7
N Neustarten des Codes nach der Fehlermeldung Allgemeine Java-Themen 17
L Nach dem Login // Java Desktop Software Allgemeine Java-Themen 7
N Programm nach Abschluss neustarten lassen Allgemeine Java-Themen 6
F Java Code ausführen direkt nach Anmelden in Windows Allgemeine Java-Themen 2
J Jasper Reports - Compilerproblem nach Umstellung von Groovy auf Java Allgemeine Java-Themen 7
looparda Liste filtern nach Prädikaten verschiedener Typen Allgemeine Java-Themen 3
S Apache POI Filtern nach bestimmten Kriterium Allgemeine Java-Themen 1
L Korrektur nach der Berechnung vornehmen, aber wie? Allgemeine Java-Themen 11
C Config nach bestimmten Wertdurchsuchen. Allgemeine Java-Themen 2
B Suche nach einem Testprogramm für meine BA Allgemeine Java-Themen 0
B Maven Keycloak library wirft exceptions nach maven package Allgemeine Java-Themen 1
D BufferedReader bricht nach 1248 Iterationen ab Allgemeine Java-Themen 14
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
H IDEA IntelliJ Java Mail funktioniert nach Export nicht mehr! Allgemeine Java-Themen 1
F Zurnung nach Buchstaben und deren Prüfung Allgemeine Java-Themen 9
M Dateien nach kopieren vergleichen Allgemeine Java-Themen 9
MiMa Sortieren nach Stellenangaben Allgemeine Java-Themen 7
L Erste Schritte Liste von Datums filter nach Monate Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
J Ausgabe von Links nach Rechts ausgeben? Allgemeine Java-Themen 2
K JAR Datei Corrupt nach Kopieren Allgemeine Java-Themen 4
The Pi 2D-Grafik Tic Tac Toe nach Gewinn rot Allgemeine Java-Themen 1
G Programm, das nach abgearbeiteter main Methode weiterläuft Allgemeine Java-Themen 72
C PDFBox: Nach RegEx ganze Zeile Allgemeine Java-Themen 4
R javax.comm --> Programm funktioniert nach Export nicht mehr Allgemeine Java-Themen 0
L Suche nach CalDav Server API Allgemeine Java-Themen 0
K Java ruft Methoden nicht der Reihe nach auf Allgemeine Java-Themen 14
T Textarea nach nur 1 wort durchsuchen Allgemeine Java-Themen 3
D Methoden Buttons erscheinen doppelt nach Wiederholung in Schleife Allgemeine Java-Themen 1
I nach Image Load in ListView, kann Ordner nicht mehr gelöscht werden Allgemeine Java-Themen 1
K Auf einer Website nach einem String suchen Allgemeine Java-Themen 5
C Eclipse OutOfMemory nach dem exportieren Allgemeine Java-Themen 4
D Erste Schritte Array von einer forschleife nach ausserhalb trasferieren Allgemeine Java-Themen 3
VfL_Freak Große und seltsame Probleme nach Java-Update auf V1.8.0_91 Allgemeine Java-Themen 3
heyluigi Random Integer Array Ausgabe nach Größe sortieren Allgemeine Java-Themen 6
D Java Datei nach Eclipse Export funktioniert nicht Allgemeine Java-Themen 0
B Bild aus Jar kann nach Export nicht mehr gefunden werden Allgemeine Java-Themen 13
B Umgebungsvariable Anpassen der Umgebungsvariablen nach Java-Update ? Allgemeine Java-Themen 14
H jid3lib nach schreiben keine Tags im Folder angezeigt Allgemeine Java-Themen 1
F Methoden Arraylist weiterverwenden nach methoden Aufruf Allgemeine Java-Themen 2
KilledByCheese Dezimal nach Hexadezimal rechner wirft seltsame exception Allgemeine Java-Themen 4
J Programm meldet "Keine Rückmeldung" nach Verbindung zum Server Allgemeine Java-Themen 4
E Java wird beendet nach paar Sekunden Allgemeine Java-Themen 14
H Best Practice setHeader in jsp nach RequestDispatcher.include Allgemeine Java-Themen 0
L Nach Button drücken den Text festspeichern Allgemeine Java-Themen 9
M .jar nach Datei prüfen Allgemeine Java-Themen 2
F String nach Schlüsselwörtern durchsuchen und ganze Zeile ausgeben Allgemeine Java-Themen 4
HarleyDavidson Input/Output Heruntergeladene Datei direkt nach dem Download öffnen ohne zu speichern Allgemeine Java-Themen 1
J Swing Cursor.WAIT funktioniert nicht nach JFileChooser Allgemeine Java-Themen 1
VfL_Freak JDK installieren Problem mit Erstellungspfad nach Wechsel von Java7 auf Java8 Allgemeine Java-Themen 1
B Eclipse Nach Export einer .jar Fehler: Hauptklasse konnte nicht gefunden oder geladen werden Allgemeine Java-Themen 5
thet1983 nach teilen eines Dateinamens suchen Allgemeine Java-Themen 6
F JLabel nach 5 Sekunden wieder leeren Allgemeine Java-Themen 7
M Fasta nach Mustern durchsuchen dauert zu lange Allgemeine Java-Themen 2
J Bilder halb in falscher Farbe nach kopieren aus Web Allgemeine Java-Themen 3
Thallius Neuen Prozess starten, der auch nach Beedingung des Starter-Prozesses weiterläuft? Allgemeine Java-Themen 5
T Nach Java Update: Jar Datein öffnen sich nicht mehr mit doppelklick Allgemeine Java-Themen 3
S Start des zweiten Threads erst nach Beenden des ersten Threads Allgemeine Java-Themen 13
A Funktionen aufrufen nach Schema x Allgemeine Java-Themen 2
G JavaFX Problem nach Update auf Java 8 Allgemeine Java-Themen 0
AssELAss String jeweils nach x Zeichen Zeilenumbruch Allgemeine Java-Themen 1
F E-Mail aus JAVA senden nach Umstellung auf Netbean 7.4 mit Java 7U45 nicht mehr möglich Allgemeine Java-Themen 4
J Ausgabe nach Excel Allgemeine Java-Themen 1
K PCM_UNSIGNED nach PCM_SIGNED Allgemeine Java-Themen 0
D Object nach Vererbung mit Class Object überprüfen Allgemeine Java-Themen 4
AssELAss Zeilenumbruch immer nach bestimmtem Zeichen Allgemeine Java-Themen 1
L Strings nach sortiertem String zurück ordnen Allgemeine Java-Themen 0
A Java - Suche nach Datensatz mit DateChooser Allgemeine Java-Themen 0
L Strings nach gleichem Muster ordnen Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben