Click here to Skip to main content
15,867,686 members
Articles / Desktop Programming / MFC
Article

Sample JNI Application

Rate me:
Please Sign up or sign in to vote.
4.04/5 (21 votes)
19 May 2003CPOL1 min read 144.2K   5.5K   37   16
Sample JNI DLL and Java test code

Introduction

I always wanted to play around with JNI. This is my first attempt so I created a utility DLL called TestImpl.dll that exports several useful functions which are difficult or impossible to implement in JAVA.

Test.java is the sample application which calls each of the functions below.

TestImp.cpp contains the code to produce TestImp.dll and exports the functions below. TestImpl.dll is loaded by Java code using the following line: static {System.loadLibrary("TestImp");}.

Java
public native void print(String msg); 

This is trivial and just prints the supplied string using a printf() statement.

Java
public native byte[] readFile(String path);

This function reads a file and returns a byte array.

Java
public native int searchFile(String path, byte[] b, int bLength);

This function performs a very fast binary search of a file for the supplied byte array.

Java
public native String[] findFiles(String path, String mask); 

This function will return a String[] of file names that match the supplied mask. i.e. *.*, *.java, *.class ...

Java
public native String[] checkProcess(String processName, boolean killIt, 
    boolean printOutput); 

This function will check for a running process (use the same process name you see in Task Manager), list all running processes (use " " for the process name), or kill a process.

Java
public native int startProcess(String commandLine, String workingDir); 

This function will call createProcess().

Java
public native boolean waitForFileMask(String directory, String fileMask); 

This function will wait(block) until a file that matches the supplied mask (*.java, *.class, *.txt ...) appears in the supplied directory.

Java
public native boolean waitForAnyFile(String directory); 

This function will wait(block) until any file is added, renamed or deleted from the supplied directory.

I have included a project (VC++ 6.0) with all required files to build the DLL and a sample Java file that calls each of the above functions. You may need to edit the javac_.bat and Test_run.bat files to point to your Java installation (I run multiple versions).

Enjoy!

History

  • 20th May, 2003: Initial post

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
United States United States
I enjoy working with C#, Java, Perl and C++

Comments and Discussions

 
Questionview contents of ITLSSPProc.dll Pin
Member 977863922-Jan-13 19:55
Member 977863922-Jan-13 19:55 
QuestionJava callback Pin
Member 397024011-Jul-11 20:39
Member 397024011-Jul-11 20:39 
AnswerRe: Java callback Pin
Rod VanAmburgh12-Jul-11 8:57
Rod VanAmburgh12-Jul-11 8:57 
GeneralGood, but less of unicode support Pin
st_shadow24-Feb-09 6:02
st_shadow24-Feb-09 6:02 
Generalhii Pin
t-829-Jul-08 19:26
t-829-Jul-08 19:26 
Questionwhat if i want to have my own file names in native code? Pin
User 192590128-Jun-08 19:21
User 192590128-Jun-08 19:21 
GeneralGood sample Pin
Ray Guan20-Apr-08 22:37
Ray Guan20-Apr-08 22:37 
QuestionHow to call a DLL developed in C++ without re-Implimentation? Pin
yasirqau9-Apr-08 19:57
yasirqau9-Apr-08 19:57 
AnswerRe: How to call a DLL developed in C++ without re-Implimentation? Pin
User 192590128-Jun-08 19:22
User 192590128-Jun-08 19:22 
GeneralRe: How to call a DLL developed in C++ without re-Implimentation? Pin
yasirqau29-Jun-08 18:45
yasirqau29-Jun-08 18:45 
Generalnetwork traffic sniffer in Java Pin
Abhishek Tiwari8-Apr-05 22:40
Abhishek Tiwari8-Apr-05 22:40 
GeneralRe: network traffic sniffer in Java Pin
Rod VanAmburgh9-Apr-05 14:50
Rod VanAmburgh9-Apr-05 14:50 
GeneralRe: network traffic sniffer in Java Pin
slasher12323-Feb-06 4:32
slasher12323-Feb-06 4:32 
GeneralThanks a lot.. Pin
jay2417-Oct-04 19:17
jay2417-Oct-04 19:17 
GeneralRe: Thanks a lot.. Pin
saiusha23-Nov-04 2:59
saiusha23-Nov-04 2:59 
GeneralHi Pin
wei leong11-Oct-04 22:46
wei leong11-Oct-04 22:46 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.