Ich schreibe eine native Anwendung, die JNI verwendet, um eine Java Virtual Machine zu erstellen und Code darauf auszuführen. Diese Anwendung soll verteilt werden, damit andere sie verwenden können, also muss sie auf anderen Computern arbeiten, nicht nur auf meinen. Das alles funktioniert gut auf dem PC, aber auf dem Mac gibt es alle möglichen Probleme.OSX - Kompilieren einer Java JNI-Anwendung, die nur mit JRE ausgeführt wird
Wenn ich das Java-Framework eingebaut in Xcode verwenden, dann kann ich verwenden JNI sofern alle meinen Code zu Java Version 6 kompiliert wird - da Xcode Java-Framework offenbar Unterstützung bei Java 6.
beendetich kann Verwenden Sie eine neuere Version von Java, wenn ich das JDK installiere und geschickt mit den Dateien libjvm.dlib, libjli.dylib und libjava.dylib verlinke. In diesem Szenario lief alles super, das war ziemlich cool. Also habe ich versucht, das auf einem anderen Mac auszuführen, auf dem das JDK nicht installiert war, nur die JRE, und ich stellte fest, dass es nicht funktionierte! Obwohl jre/lib/server/libjvm.dylib im JDK existiert, stellt sich heraus, dass es in der JRE nicht existiert.
Meine Frage ist: Gibt es eine Möglichkeit, eine Java 8 oder Java 9 VM zu erstellen, die auf Mac OSX nur mit der JRE und nicht dem JDK ausgeführt wird?
Versuchen Sie 'jre/lib/server/libjvm.dylib' über' dlopen' zu laden und rufen Sie die Funktionen auf diese Weise auf. Ich hatte dasselbe Problem wie du und fand keine Lösung. Bisher bin ich dynamisch verlinkt und es funktioniert gut auf meiner eigenen Comp. Ich benutze 'getenv (" JAVA_HOME ")', um die JRE zu finden. – Brandon
"Es hat nicht funktioniert!" - Wir werden mehr brauchen, um weiterzumachen. Wie genau ist es gescheitert? Meine erste Vermutung ist, dass Sie den Dylib '@ Executable_path's nicht richtig gesetzt haben, aber das ist nur eine Vermutung. – Ssswift
Hi Brandon, das ist eine ziemlich gute Lösung, aber mein Hauptproblem ist, dass jre/lib/server/libjvm.dylib nicht zu existieren scheint, wenn Sie nur die Java Runtime Environment und nicht das Java Development Kit installieren. Gibt es eine Möglichkeit, dies nur mit der JRE zu erreichen? – SynthDan