簡體   English   中英

我如何用Base64字符串執行c ++中包含的jar文件,而不在HDD上寫入它?

[英]How can I execute a jar file included in c++ with a Base64 string without write it on the HDD?

如何在不將其寫入HDD的情況下執行Base64字符串中c ++ exe文件中包含的jar文件? 是否可以從內存或類似的方法在HDD上沒有2個文件的情況下執行它?

提前致謝

使用JNI:

  • 創建一個JVM實例。
  • 在解碼的base64 jar字符串上創建ByteArrayInputStream。
  • 創建一個JarInputStream並將其傳遞給ByteArrayInputStream。
  • 迭代JarInputStream中的每個jarEntry,並使用ClassLoader加載類。
  • 將每個類存儲在HashMap中以便快速訪問。

另一種方法是調用JNI:

jclass DefineClass(JNIEnv *env, const char *name, jobject loader, const jbyte *buf, jsize bufLen);

示例: https //github.com/Brandon-T/Cpp-JVM

我將示例添加到我的Github中,因為它太大而無法放在StackOverflow上。 注意:您不需要我編寫的JNI包裝器。 如果使用原始的JNI,它將減少一噸的代碼。

包裝器是我很久以前編寫的一些遺留代碼中的一部分,我決定只使用它,並讓它為我跟蹤JavaVM和JNIEnv。

編輯:請注意,我對libJVM和libJNI的路徑進行了硬編碼:

https://github.com/Brandon-T/Cpp-JVM/blob/master/JVM.cpp#L41,因為沒有它我無法讓JVM在OSX上運行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM