运行JNI

时间:2015-06-19 21:16:18

标签: java java-native-interface

我在RedHat Linux上运行我的C ++应用程序时调用UnsupportedClassVersionError时出现FindClass()错误。我们是一家C ++商店,我们正在使用JNI,以便使用第三方代理向我们提供的Java库来与他们的系统进行交互。

该程序在几年内没有重新编译,但最近该程序使用的较旧的C ++库已被弃用,因此我们不得不重新编译该程序。但是现在当我们尝试运行该程序时,我们会收到此错误。

Exception in thread "main" java.lang.UnsupportedClassVersionError: TradingEngineWrapper : Unsupported major.minor version 52.0
        at java.lang.ClassLoader.defineClass1(Native Method)
        at java.lang.ClassLoader.defineClass(ClassLoader.java:621)
        at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
        at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
        at java.net.URLClassLoader.access$000(URLClassLoader.java:56)
        at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:307)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:252)
        at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:320)

我尝试升级到更新版本的JDK(jdk1.8.0_45),但这没有帮助。我知道这是因为我们的Java类库是用一个版本编译的,但是JNI调用的JRE是一个不兼容的版本。我的问题是,如何控制启动C ++应用程序时调用的JRE版本?因为我正在调用C ++应用程序,所以我没有使用" java app_name"或类似的东西。任何帮助将不胜感激。

谢谢。

0 个答案:

没有答案