„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > So integrieren Sie Java in C++-Anwendungen: Können Sie Java-Code im laufenden Betrieb ausführen?

So integrieren Sie Java in C++-Anwendungen: Können Sie Java-Code im laufenden Betrieb ausführen?

Veröffentlicht am 07.11.2024
Durchsuche:515

How to Integrate Java into C   Applications: Can You Run Java Code on the Fly?

Integration von Java in C-Anwendungen

Um die Funktionalität einer C-Anwendung zu erweitern, kann die Integration einer Java-Komponente wünschenswert sein. Obwohl dies mit Python erreicht wurde, scheint es keine klare Lösung für die Java-Integration gegeben zu haben.

JNI- und Java-Klassenverwendung von C

Java Native Interface (JNI) ist eine mögliche Lösung, setzt aber typischerweise ein vollständiges Java-Programm voraus, das Java-Klassen nutzt. In diesem Fall besteht das Ziel jedoch darin, Java-Klassen innerhalb der C-Anwendung zu verwenden.

Java-Code im laufenden Betrieb kompilieren und auswerten

Die gewünschte Funktionalität umfasst das Kompilieren und Ausführen von Java-Code während der Laufzeit (wie eine Skriptsprache) mithilfe von JNI oder einem ähnlichen Mechanismus.

Beispiel Java Code

import c4d.documents.*;

class Main {
  public static void main() {
    BaseDocument doc = GetActiveDocument();
    BaseObject op = doc.GetActiveObject();
    if (op != null) {
      op.Remove();
    }
  }
}

Lösung: Eingebettete JVM

Die Lösung liegt in der Einbettung einer Java Virtual Machine (JVM) in die C-Anwendung. Das Nachschlagewerk von Oracle liefert die nötigen Informationen. Die wichtigsten Schritte umfassen:

  • Einschließen von und Initialisieren von JVM-Argumenten (JavaVM und JNIEnv)
  • Initialisieren der JVM durch Aufrufen von JNI_CreateJavaVM()
  • Verwenden JNI zum Aufrufen von Java-Methoden (z. B. jclass, jmethodID und jmethod)
  • Zerstören der JVM mit JNI_DestroyJavaVM()

Dies ermöglicht anspruchsvollere Vorgänge, wie z. B. benutzerdefinierte Klassenlader, und stellt die notwendige Integration von Java-Funktionen in die C-Anwendung bereit.

Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3