Java在通过JNI调用时抛出Null异常,但在从Java程序调用时有效

Java在通过JNI调用时抛出Null异常,但在从Java程序调用时有效,java,java-native-interface,Java,Java Native Interface,我正在使用JNI从外部系统调用.jar库中的Java方法。我的问题是,当我编写使用该库的简单Java程序时,一切正常,但当我通过JNI执行相同的代码时,该库在解析字符串中的整数时抛出Null异常。我确信在我的JNI代码中没有问题,因为我有一个更新版本的库,它具有相同的接口,可以通过JNI正常工作。但不幸的是,由于与外部系统的兼容性问题,我不得不使用旧版本 我认为问题在于jvm.dll如何创建VM——我可能缺少了一些在创建VM时应该传递给jvm.dll的参数。有人知道问题出在哪里吗 我不能发布我的

我正在使用JNI从外部系统调用.jar库中的Java方法。我的问题是,当我编写使用该库的简单Java程序时,一切正常,但当我通过JNI执行相同的代码时,该库在解析字符串中的整数时抛出Null异常。我确信在我的JNI代码中没有问题,因为我有一个更新版本的库,它具有相同的接口,可以通过JNI正常工作。但不幸的是,由于与外部系统的兼容性问题,我不得不使用旧版本

我认为问题在于jvm.dll如何创建VM——我可能缺少了一些在创建VM时应该传递给jvm.dll的参数。有人知道问题出在哪里吗

我不能发布我的代码,但我可以在示例中解释: -库版本1 contatins类路由器与构造函数路由器(int i)-我没有这个类的代码 -库版本2包含具有相同构造函数的相同类 -当我写简单的程序时

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)
错误消息:System.Exception:JAVA Exception:JAVA.lang.NullPointerException
在com.coda.core.types.TypeNumber.parseNumber(TypeNumber.java:403)上
位于com.coda.core.types.TypeInteger.parse(TypeInteger.java:123)
位于com.coda.core.types.TypeInteger.parse(TypeInteger.java:137)
位于com.coda.core.Options.setOption(Options.java:138)
位于com.coda.core.Options.set(Options.java:85)
位于com.coda.core.configuration.ConfigurationLoader.getConfiguration(ConfigurationLoader.java:144)
位于com.coda.xml.Configuration.init(Configuration.java:453)
位于com.coda.xml.Configuration.init(Configuration.java:370)
位于com.coda.xml.router.AppServer(AppServer.java:250)
在com.coda.xml.router.router.(router.java:122)

我已经解决了这个问题。我在JVM的参数上确实犯了错误。旧的库需要另一个我不知道的jar库。因此,我已经将库添加到类路径中,它可以很好地工作。真是愚蠢的例外,什么也没说,这条信息让我以错误的方式寻找问题


感谢大家的评论

只有一些代码可能有助于向我们展示您的本地代码失败的代码是什么?“内部异常”是怎么说的?哦,
jvm.dll
可能没有坏。我打赌这是C代码的编译问题,而不是Java代码的编译问题。很抱歉,我忘了提到一件重要的事情——我正在以与jni4net相同的方式使用.NET中的JNI。