我使用JNI從外部系統調用.jar庫中的Java方法。我的問題是,當我編寫使用該庫的簡單Java程序時,一切正常,但是當我通過JNI執行相同的代碼時,該庫在從String中解析整數時會拋出Null異常。我相信在我的JNI代碼中沒有問題,因爲我有一個更新版本的庫,它具有相同的接口,可以通過JNI正常工作。但不幸的是,由於與外部系統的兼容性問題,我必須使用舊版本。Java通過JNI調用時拋出Null異常,但在從Java程序調用時工作
我認爲問題在於如何jvm.dll創建虛擬機 - 我可能會缺少一些參數,我應該在創建虛擬機時傳遞給jvm.dll。有誰知道問題出在哪裏?
我不能發佈我的代碼,但我可以解釋它例如: - 庫版本1個contatins級路由器與路由器的構造(int i)以 - 我沒有代碼 該類 - 庫版本2個conatins同一類同一構造 - 當我寫簡單的程序
import java.lang.reflect.*;
public class Basic
{
public static void main(String[] args)
{
Router = new Router(10);
}
}
它的工作原理與這兩個庫。
當我通過JNI運行與更新的庫2相同的代碼時,它也可以工作。 但是,當我與圖書館1通過JNI運行的代碼,它崩潰因以下內部異常
Error message: System.Exception: JAVA Exception: java.lang.NullPointerException
at com.coda.core.types.TypeNumber.parseNumber(TypeNumber.java:403)
at com.coda.core.types.TypeInteger.parse(TypeInteger.java:123)
at com.coda.core.types.TypeInteger.parse(TypeInteger.java:137)
at com.coda.core.Options.setOption(Options.java:138)
at com.coda.core.Options.set(Options.java:85)
at com.coda.core.configuration.ConfigurationLoader.getConfiguration(ConfigurationLoader.java:144)
at com.coda.xml.Configuration.init(Configuration.java:453)
at com.coda.xml.Configuration.init(Configuration.java:370)
at com.coda.xml.router.AppServer.<init>(AppServer.java:250)
at com.coda.xml.router.Router.<init>(Router.java:122)
只有一些代碼可能會幫助 – TheWhiteRabbit
發佈您的代碼! –
向我們顯示您的本地代碼 –