2012-06-22 2 views
4

저는 Java Learning에서 처음이며 JNI 시작을 원합니다. 그리고 Cygwin에서 함께 일하고 다음과 같이 내가 된 .java (Helloworld.java) 확장자를 가진 파일을 만든 :Windows에서 JNI 및 C 시작하기

class HelloWorld { 
    private native void print(); 
    public static void main(String[] args) { 
     new HelloWorld().print(); 
    } 
    static { 
     System.loadLibrary("HelloWorld"); 
    } 
} 

은 그 때 나는 기본 헤더 파일을 만들고 그 후 명령 행 (javac Helloworld.java)를 통해 파일을 컴파일 명령을 통해 javah –jni Helloworld 는 다음 또한 같은 C 파일을 생성하여 구현 : 그 잠시 후

#include <jni.h> 
#include <stdio.h> 
#include "HelloWorld.h" 

JNIEXPORT void JNICALL 
Java_HelloWorld_print(JNIEnv *env, jobject obj) 
{ 
    printf("Hello World!\n"); 
    return; 
} 

나는 명령을 실행

Gcc –wall –g Helloworld.c –o hello 

helloworld.c:1:17: fatal error: jni.h: No such file or directory 
compilation terminated. 

어떻게 실행하고 파일을 실행하기 위해 경로를 설정하는 절차는 무엇을 할 수 Cygwin에서

에서 명령 프롬프트 줄에 메시지를 줘? 제발 도와주세요. 감사.

+0

C 용 JNI 라이브러리를 설치하지 않았거나 포함 경로에 포함시키지 않은 것처럼 보입니다. – m0skit0

+1

IMHO, JNI는 Java를 처음 사용하는 사용자에게 주어질 수있는 최악의 상황입니다. 저는 개인적으로 [Java Learning Trail] (http://docs.oracle.com/javase/tutorial/java/index.html)을 시작으로 Head First Java와 같은 좋은 책을 가져 오는 것이 좋습니다. –

+0

왜 jni4net 태그가 붙어 있습니까? – RenniePet

답변

1

당신이 JDK를 설치한다고 가정하면, 당신은이 JNI에 대한 디렉토리를 포함에 대해 GCC 알려야합니다 : 내 컴퓨터에 $JAVA_HOME는 자바 bin 디렉토리의 상위 디렉토리로 설정해야합니다

-I$JAVA_HOME/../include 

(/usr/lib/jvm/java-6-openjdk-amd64/jre, 예를 들어). 설정되어 있지 않은 경우, jni.h 헤더가있는 폴더를 찾으면 더 간단합니다.

JNI에서 Java 학습을 시작하는 것은 어려운 일이지만, 나는 당신의 결정을 존중합니다. 책을 만드는 경우 Core Java Volume ICore Java Volume II을 제안합니다. 후자의 말미에서 특히 네이티브 메소드에 대한 포괄적 인 적용 범위를 찾을 수 있습니다.

1

Windows에서 MinGW를 사용했습니다. 경로 환경 변수에 "; C : \ MinGW \ bin \"을 추가 한 후 아래 명령을 사용하여 Windows 명령 프롬프트에서 gcc.exe를 실행할 수있었습니다.

jni.h 파일은 java home include 폴더에 있습니다. JAVA_HOME 환경 변수를 사용하거나 명시 적으로 지정할 수 있습니다.

gcc -c -I"C:\Program Files\Java\jdk1.6.0_26\include" -I"C:\Program Files\Java\jdk1.6.0_26\include\win32" "S:\Accessibility\tools\src\test\java\com\accessibility\HelloWorld.c" 

이렇게하면 HelloWorld.o 파일이 만들어집니다. Visual Studio를 성공적으로 컴퓨터에 설치 한 경우

0

, 당신은 컴파일 할 수 있습니다비주얼 스튜디오 개발자 명령 프롬프트를 사용하여.

를 사용하는 DLL X64 (64 비트) 버전을 생성하기 위해 "VS20XX 86 기본 도구 명령 프롬프트"를 사용하여 DLL X86 (32 비트) 버전을 생성하려면 "VS20XX 64 기본 도구 명령 프롬프트"

XXVS20XX은 Visual Studio 버전 2008 이상입니다.

cl.exe /LD /EHsc /I "%JAVA_HOME%\include" /I "%JAVA_HOME%\include\win32" TestJNIString.c 

참고 : 환경 변수에 JAVA_HOME 변수가 설정되어 있는지 확인하십시오.