2014-02-13 107 views

回答

2

這通常是不可能的幾個.so文件從一些*創建一個.jar文件.so文件。

A .so(共享對象)是一個可以動態加載的庫,例如Windows系統上的.dll。這些庫包含本機編譯的代碼,並可能依次依賴於其他庫。 A .jar是Java虛擬機(JVM)的歸檔文件。它也可以動態加載,但它包含.class文件,其中包含爲JVM編譯的代碼。你可以將機器代碼中的程序翻譯成JVM字節碼(或者寫一個仿真器,例如x86架構),但是這會很難做到,因爲它的執行模型很難做到, CPU和JVM差別很大,例如在他們的記憶治療中。結果可能會非常低效。而重新編譯一個動態加載的庫將是相當不可移植的,從而破壞了JVM的目的。

如果您只是想與來自JVM的本機庫(例如用Java編寫的程序)接口,那麼您可以使用Java Native Interface(JNI)。在這種情況下,你必須圍繞.so編寫一個C或C++包裝器,然後才能調用這些函數。

我不知道你爲什麼提到Perl。雖然一個很好的語言,它不能幫助這裏。

+2

你可以在'.jar'文件裏放一個'.so'文件,就像你可以把鴨子放在火雞裏面一樣。它會有用嗎?也許,也許不是。你不能將它作爲一個程序執行,但它將是一個'.jar'文件。 –