设置环境变量
classpath=.;jdk安装目录\lib
classpath=.;jdk安装目录\lib
解决方案 »
- Could not find the main class Program will exit 解决方案
- GUI的相关问题
- 麻烦帮忙看一个简单的程序!!!!!!
- new Runnable() 问题?
- java命令抛出java.lang.UnsupportedClassVersionError异常
- com.sun.jdi.InvocationException,这个异常是什么意思???
- 运行tomcat时的一个小错误,急急急!
- 怎样用jb7将源程序编译成exe文件?
- 十进制到十六进制的转换 60分 可加~~~~
- 关于数据库联接代码调试事的错误判断?
- java比C++好在那里?人的精力是有限的
- 一个DNS解析的问题
http://www.chinajavaworld.com/java/native/Native.htm
不知有用否?
import java.io.*;
import java.util.*;public class NativeDemo
{
public static void main(String args[])
{
int i=1;
NativeDemo ob = new NativeDemo();
String ls=ob.JNGetFPError(i);
System.out.println("this is test:"+ls);
}
public native String JNGetFPError(int nErrorCode);
static
{
System.loadLibrary("Dllsam");
}}
2,NativeDeom.h文件如下:/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class NativeDemo */#ifndef _Included_NativeDemo
#define _Included_NativeDemo
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: NativeDemo
* Method: JNGetFPError
* Signature: (I)Ljava/lang/String;
*/
JNIEXPORT jstring JNICALL Java_NativeDemo_JNGetFPError
(JNIEnv *, jobject, jint);#ifdef __cplusplus
}
#endif
#endif3,Dllsam.cpp文件如下:#include "stdAfx.h"
#include "atlconv.h"
#include "nativedemo.h"
#include <stdio.h>JNIEXPORT jstring JNICALL Java_NativeDemo_JNGetFPError
(JNIEnv *env, jobject jo, jint jin)
{ int m=jin;
LPCTSTR ls= NULL;
typedef LPTSTR(CALLBACK* LPFNDLLFUNC6)(int);
HINSTANCE hDLL; // Handle to DLL
LPFNDLLFUNC6 lpfnDllFunc6;
hDLL = LoadLibrary("JNFP_YD");//调用另一个动态库文件JNFP_YD。
if (hDLL != NULL)
{
lpfnDllFunc6 = (LPFNDLLFUNC6)GetProcAddress(hDLL,"JNGetFPError");//动态库JNFP_YD的一个函数。
if (!lpfnDllFunc6)
{
FreeLibrary(hDLL);
return NULL;
}
else
{
ls=lpfnDllFunc6(m);
jstring rtn = 0;
int slen = strlen(ls);
wchar_t* buffer = 0;
char *b= new char[128];
strcpy(b, ls);
if( slen == 0 )
{
rtn = env->NewStringUTF( b );
}
else
{
int length = MultiByteToWideChar( CP_ACP, 0, (LPCSTR)ls, slen, NULL, 0 );
buffer = (wchar_t*)malloc( length*2 + 1 );
if( MultiByteToWideChar( CP_ACP, 0, (LPCSTR)ls, slen, (LPWSTR)buffer, length ) >0 )
rtn = env->NewString( (jchar*)buffer, length );
}
if( buffer )
free( buffer );
return rtn;
}
}
} 注意的是:
动态库JNFP_YD不是我的,是别人给我现成的,叫我调用,我自己做的动态库好用,可他的不好用,难道是他的动态库函数有问题,可是我的同事说用vb调用其动态函数一点问题没有,这到底是那的问题。 我在 classpath设置了classpath=.;jdk安装目录\lib,就没有
Exception in thread "main" java.lang.NoClassDefFoundError: NativeDemo 这错误了,可是一运行程序,却出现如下的问题了:
C:\inttocharcompany>java NativeDemoAn unexpected exception has been detected in native code outside the VM.
Unexpected Signal : EXCEPTION_ACCESS_VIOLATION occurred at PC=0x6bc43ec4
Function name=Ordinal535
Library=C:\WINNT\system32\MFC42.DLLCurrent Java thread:
at NativeDemo.JNGetFPError(Native Method)
at NativeDemo.main(NativeDemo.java:15)Dynamic libraries:
0x00400000 - 0x00405000 C:\WINNT\system32\java.exe
0x77F80000 - 0x77FFB000 C:\WINNT\System32\ntdll.dll
0x77D90000 - 0x77DEB000 C:\WINNT\system32\ADVAPI32.dll
0x77E60000 - 0x77F34000 C:\WINNT\system32\KERNEL32.DLL
0x77D20000 - 0x77D90000 C:\WINNT\system32\RPCRT4.DLL
0x78000000 - 0x78046000 C:\WINNT\system32\MSVCRT.dll
0x20000000 - 0x20026000 D:\ra\rav\Memmon.dll
0x77DF0000 - 0x77E54000 C:\WINNT\system32\USER32.dll
0x77F40000 - 0x77F7C000 C:\WINNT\system32\GDI32.DLL
0x75E00000 - 0x75E1A000 C:\WINNT\System32\IMM32.DLL
0x6D420000 - 0x6D4EF000 D:\jbuilder\jdk1.3.1\jre\bin\hotspot\jvm.dl
0x77530000 - 0x77560000 C:\WINNT\system32\WINMM.dll
0x6D220000 - 0x6D227000 D:\jbuilder\jdk1.3.1\jre\bin\hpi.dll
0x6D3B0000 - 0x6D3BD000 D:\jbuilder\jdk1.3.1\jre\bin\verify.dll
0x6D250000 - 0x6D266000 D:\jbuilder\jdk1.3.1\jre\bin\java.dll
0x6D3C0000 - 0x6D3CD000 D:\jbuilder\jdk1.3.1\jre\bin\zip.dll
0x10000000 - 0x1001B000 C:\inttocharcompany\zhpprogramtest\Dllsam.d
0x5F400000 - 0x5F4E5000 C:\WINNT\system32\MFC42D.DLL
0x10200000 - 0x10260000 C:\WINNT\system32\MSVCRTD.dll
0x6BC20000 - 0x6BC2D000 C:\WINNT\System32\MFC42LOC.DLL
0x08FD0000 - 0x08FD8000 C:\inttocharcompany\zhpprogramtest\JNFP_YD.
0x6BC40000 - 0x6BD32000 C:\WINNT\system32\MFC42.DLL
0x08FE0000 - 0x090AF000 C:\inttocharcompany\zhpprogramtest\jinnuo.d
0x090B0000 - 0x090C7000 C:\inttocharcompany\zhpprogramtest\VFPSImg.
0x090D0000 - 0x090D9000 C:\inttocharcompany\zhpprogramtest\VFPS.dll
0x090E0000 - 0x090FA000 C:\inttocharcompany\zhpprogramtest\kyQual.d
0x78080000 - 0x78095000 C:\WINNT\system32\MSVCRT40.dll
0x780A0000 - 0x780B2000 C:\WINNT\system32\MSVCIRT.dll
0x77900000 - 0x77923000 C:\WINNT\system32\imagehlp.dll
0x72960000 - 0x7298D000 C:\WINNT\system32\DBGHELP.dll
0x731B0000 - 0x731BA000 C:\WINNT\system32\PSAPI.DLLLocal Time = Sun Aug 18 15:42:02 2002
Elapsed Time = 2
#
# The exception above was detected in native code outside the VM
#
# Java VM: Java HotSpot(TM) Client VM (1.3.1-b24 mixed mode)
#
# An error report file has been saved as hs_err_pid1176.log.
# Please refer to the file for further information.真不明白是那的问题。
检查检查你的c程序
我想,可能是JDK找不到dll文件吧,还是哪里需要设置?这种问题专业性太强,没有做过的人肯定不知所然,你最好找相关的书籍看一下^o^