我用一个简单的c#程序制作了一个dll文件,并试图从终端编译它,出现了以下错误
net.sf.jni4net.jni.JNIException: Can't initialize jni4net. (32bit vs 64bit JVM vs CLR ?)
CLR architecture: 64bit
JAVA_HOME: C:\Program Files (x86)\Java\jdk1.8.0_211\ ---> System.BadImageFormatException: An attempt was made to load a program with an incorrect format. (Exception from HRESULT: 0x8007000B)
at net.sf.jni4net.jni.JNI.Dll.JNI_GetDefaultJavaVMInitArgs(JavaVMInitArgs* args)
at net.sf.jni4net.jni.JNI.Init()
--- End of inner exception stack trace ---
at net.sf.jni4net.jni.JNI.Init()
at net.sf.jni4net.jni.JNI.CreateJavaVM(JavaVM& jvm, JNIEnv& env, Boolean attachIfExists, String[] options)
at net.sf.jni4net.Bridge.CreateJVM()
at net.sf.jni4net.Bridge.CreateJVM(BridgeSetup setup)
at net.sf.jni4net.proxygen.model.Repository.LoadClasspath()
at net.sf.jni4net.proxygen.model.Repository.Register()
at net.sf.jni4net.proxygen.Program.Work(String[] args)
at net.sf.jni4net.proxygen.Program.Main(String[] args)
现在我使用的java是64位的,在microsoft.net下我有两个文件夹,分别是32位和64位的framework64和frameworkframework64。我不知道哪一个正在使用中,如果需要的话,如何切换到有需要的人。
1条答案
按热度按时间sgtfey8w1#
我看到您尝试从x64jni4net初始化x86jvm。我在jvm路径中看到了这一点。所以你应该改变javahome环境变量。