<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Interesantes problem (wahrscheinlich nur ein anfänger Fehler)]]></title><description><![CDATA[<p>Hi, mein Problem ist, dass ich bei einem code stück das ich geschreiben habe Access Violations bekomme zur laufzeit.</p>
<p>Ich habe jmeClasses, dessen methode initJavaClasses am anfang des programms aufgerufen wird</p>
<pre><code class="language-cpp">void jmeClasses::initJavaClasses(JNIEnv* env) {
    env-&gt;GetJavaVM(&amp;vm);

    PhysicsSpace = env-&gt;FindClass(&quot;com/jme3/bullet/PhysicsSpace&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }

    PhysicsSpace_preTick = env-&gt;GetMethodID(PhysicsSpace, &quot;preTick_native&quot;, &quot;(F)V&quot;);
    PhysicsSpace_postTick = env-&gt;GetMethodID(PhysicsSpace, &quot;postTick_native&quot;, &quot;(F)V&quot;);
    PhysicsSpace_addCollisionEvent = env-&gt;GetMethodID(PhysicsSpace, &quot;addCollisionEvent_native&quot;,&quot;(Lcom/jme3/bullet/collision/PhysicsCollisionObject;Lcom/jme3/bullet/collision/PhysicsCollisionObject;J)V&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }

    PhysicsGhostObject = env-&gt;FindClass(&quot;com/jme3/bullet/objects/PhysicsGhostObject&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }

.....
snip
.....
.....

    RayResult_Class = env-&gt;FindClass(&quot;com/jme3/bullet/collision/PhysicsRayTestResult&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }
    printf(&quot;Loading Class &amp; Method ids \n&quot;);
}
</code></pre>
<p>Im header davon ist</p>
<pre><code class="language-cpp">static jclass RayResult_Class;
</code></pre>
<p>definiert,<br />
ganz oben in der .cpp steht</p>
<pre><code class="language-cpp">jclass jmeClasses::RayResult_Class;
</code></pre>
<p>wenn ich nun jedoch aus einer andern classe folgendes versuche:</p>
<pre><code class="language-cpp">jobject singleresult = env-&gt;AllocObject(jmeClasses::RayResult_Class);
</code></pre>
<p>bekomme ich eine Access Violation.</p>
<p>Wenn ich stattdessen</p>
<pre><code class="language-cpp">jclass clazz = env-&gt;FindClass(&quot;com/jme3/bullet/collision/PhysicsRayTestResult&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }
	printf(&quot;after accessing \n&quot;);
	jobject singleresult = env-&gt;AllocObject(clazz);
</code></pre>
<p>Mache funktioniert alles wie gewünscht, sieht nur extrem häßlich aus, und zudem muss jedesmal beim aufruf die klasse neu gesucht werden, was die performance drückt.</p>
<p>Hat einer eine Idee woher das problem kommen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/294919/interesantes-problem-wahrscheinlich-nur-ein-anfänger-fehler</link><generator>RSS for Node</generator><lastBuildDate>Sat, 15 Aug 2026 17:20:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/294919.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 03 Nov 2011 17:56:11 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Interesantes problem (wahrscheinlich nur ein anfänger Fehler) on Thu, 03 Nov 2011 17:59:33 GMT]]></title><description><![CDATA[<p>Hi, mein Problem ist, dass ich bei einem code stück das ich geschreiben habe Access Violations bekomme zur laufzeit.</p>
<p>Ich habe jmeClasses, dessen methode initJavaClasses am anfang des programms aufgerufen wird</p>
<pre><code class="language-cpp">void jmeClasses::initJavaClasses(JNIEnv* env) {
    env-&gt;GetJavaVM(&amp;vm);

    PhysicsSpace = env-&gt;FindClass(&quot;com/jme3/bullet/PhysicsSpace&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }

    PhysicsSpace_preTick = env-&gt;GetMethodID(PhysicsSpace, &quot;preTick_native&quot;, &quot;(F)V&quot;);
    PhysicsSpace_postTick = env-&gt;GetMethodID(PhysicsSpace, &quot;postTick_native&quot;, &quot;(F)V&quot;);
    PhysicsSpace_addCollisionEvent = env-&gt;GetMethodID(PhysicsSpace, &quot;addCollisionEvent_native&quot;,&quot;(Lcom/jme3/bullet/collision/PhysicsCollisionObject;Lcom/jme3/bullet/collision/PhysicsCollisionObject;J)V&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }

    PhysicsGhostObject = env-&gt;FindClass(&quot;com/jme3/bullet/objects/PhysicsGhostObject&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }

.....
snip
.....
.....

    RayResult_Class = env-&gt;FindClass(&quot;com/jme3/bullet/collision/PhysicsRayTestResult&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }
    printf(&quot;Loading Class &amp; Method ids \n&quot;);
}
</code></pre>
<p>Im header davon ist</p>
<pre><code class="language-cpp">static jclass RayResult_Class;
</code></pre>
<p>definiert,<br />
ganz oben in der .cpp steht</p>
<pre><code class="language-cpp">jclass jmeClasses::RayResult_Class;
</code></pre>
<p>wenn ich nun jedoch aus einer andern classe folgendes versuche:</p>
<pre><code class="language-cpp">jobject singleresult = env-&gt;AllocObject(jmeClasses::RayResult_Class);
</code></pre>
<p>bekomme ich eine Access Violation.</p>
<p>Wenn ich stattdessen</p>
<pre><code class="language-cpp">jclass clazz = env-&gt;FindClass(&quot;com/jme3/bullet/collision/PhysicsRayTestResult&quot;);
    if (env-&gt;ExceptionCheck()) {
        env-&gt;Throw(env-&gt;ExceptionOccurred());
        return;
    }
	printf(&quot;after accessing \n&quot;);
	jobject singleresult = env-&gt;AllocObject(clazz);
</code></pre>
<p>Mache funktioniert alles wie gewünscht, sieht nur extrem häßlich aus, und zudem muss jedesmal beim aufruf die klasse neu gesucht werden, was die performance drückt.</p>
<p>Hat einer eine Idee woher das problem kommen kann?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2139940</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2139940</guid><dc:creator><![CDATA[Empire Phoenix]]></dc:creator><pubDate>Thu, 03 Nov 2011 17:59:33 GMT</pubDate></item></channel></rss>