Вы можете сделать что-то действительно сладкое, используя JNI следующим образом:
MyObject.java:
public class MyObject
{
static
{
System.loadLibrary( "classname" );
}
public static native String getClassName();
public static void main( String[] args )
{
System.out.println( getClassName() );
}
}
then:
javac MyObject.java
javah -jni MyObject
then:
MyObject.c:
#include "MyObject.h"
JNIEXPORT jstring JNICALL Java_MyObject_getClassName( JNIEnv *env, jclass cls )
{
jclass javaLangClass = (*env)->FindClass( env, "java/lang/Class" );
jmethodID getName = (*env)->GetMethodID( env, javaLangClass, "getName",
"()Ljava/lang/String;" );
return (*env)->CallObjectMethod( env, cls, getName );
}
Затем скомпилируйте C вверх в общую библиотеку с именем libclassname.so
и запустите java!
* chuckle
Я обнаружил, почему компиляция Realm внутри нашего «большого» проекта привела к сбою компилятора Swift. По-видимому, виновником является опция «Thread Sanitizer» внутри секции RUN для текущей схемы.
Как представляется, в новой версии компилятора Swift есть проблема с некоторыми файлами, как отмечается в некоторой «известной проблеме», которую наша команда упустила из виду (позор нам (?)!).
blockquote>*Known Issues The Swift compiler may crash during a build when the Thread Sanitizer is enabled. (48719789) Workaround: Disable Thread Sanitizer in the Scheme Editor’s Diagnostics tab.
Простое отключение параметра «Очистка потока» делает Swift счастливым, и он больше не падает.
Теперь давайте надеяться, что Apple исправит это, как только сможет. Привет.