2017-10-18 1 views
1

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.

beendet

ich 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?

+0

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

+0

"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

+0

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

Antwort

-1

Hmm ... Ich bin mir nicht ganz sicher, dass ich verstehe, was du fragst, aber ich werde antworten, basierend auf dem, was das Problem für mich zu sein scheint. Ich muss fragen, haben Sie sichergestellt, dass Sie Ihr Java-Programm korrekt in eine .jar-Datei gepackt haben? Wenn das nicht das Problem ist, werde ich sagen, dass ich normalerweise weiß, dass Sie Bibliotheken und andere Pakete in Java bündeln können. Ich weiß nicht ehrlich, ob das eine Option für Sie wäre, da ich die von Ihnen erwähnten Dateien nicht kenne, aber das könnte eine mögliche Lösung für Sie sein.

Sorry, ich kann nicht mehr Informationen zur Verfügung stellen. Hoffentlich ist jemand anderer mit diesem speziellen Teil von Java vertrauter.

Verwandte Themen