2009-11-21 6 views
2

작동하지 않습니다 자바 JNA 래퍼를 생성하는 나는 jnaerator SimpleMeaningfulExample (http://code.google.com/p/jnaerator/wiki/SimpleMeaningfulExample)를 시도하고 가 있어요 Java 1.5.0_20. jnaerator의 SimpleMeaningfulExample

나는 맥 OS X에 1.6.0_15로 전환하고 다시 시도하고 있어요 :

$ java -jar jnaerator-0.9.2.jar -library Test Test.h -o . -v 
Auto-configuring parser... 
Nov 20, 2009 5:12:43 PM com.ochafik.lang.jnaerator.JNAeratorConfigUtils getProp 
INFO: [environment] JNAERATOR_INCLUDE_PATH=.:/usr/include 
Nov 20, 2009 5:12:43 PM com.ochafik.lang.jnaerator.JNAeratorConfigUtils getProp 
INFO: [environment] JNAERATOR_FRAMEWORKS_PATH=/System/Library/Frameworks/CoreServices.framework/Versions/Current/Frameworks:/System/Library/Frameworks/ApplicationServices.framework/Versions/Current/Frameworks:/System/Library/Frameworks:/Library/Frameworks:/Local/Library/Frameworks/:/Users/dspitzer/Library/Frameworks 
os.arch = x86_64 
Nov 20, 2009 5:12:43 PM com.ochafik.lang.jnaerator.JNAerator jnaerate 
INFO: Include path : 
     . 
     /usr/include 
Parsing native headers... 
Writing preprocessor output to '_jnaerator.preprocessed.c' 
Writing preprocessor macros to '_jnaerator.macros.cpp' 
line 0:-1 Failed to match any alternative with token [@-1,0:0='<no text>',<-1>,0:-1] 
     File: null:0 
     Input: 
     Rule: 1501:1: castExpr returns [Expression expr] : ('(' tr= mutableTypeRef ')' inner= castExpr | e= unaryExpr); 
     Stack: [] 

line 0:-1 Failed to match any alternative with token [@-1,0:0='<no text>',<-1>,0:-1] 
     File: null:0 
     Input: 
     Rule: 1501:1: castExpr returns [Expression expr] : ('(' tr= mutableTypeRef ')' inner= castExpr | e= unaryExpr); 
     Stack: [] 

line 0:-1 Failed to match any alternative with token [@-1,0:0='<no text>',<-1>,0:-1] 
     File: null:0 
     Input: 
     Rule: 1501:1: castExpr returns [Expression expr] : ('(' tr= mutableTypeRef ')' inner= castExpr | e= unaryExpr); 
     Stack: [] 

Now parsing 1 text blocks 
Normalizing parsed code... 
Generating libraries... 
JNAeration failed ! 
java.lang.NullPointerException 
     at com.ochafik.lang.jnaerator.TypeConversion.convertExpressionToJava(TypeConversion.java:1391) 
     at com.ochafik.lang.jnaerator.TypeConversion.convertExpressionToJava(TypeConversion.java:1223) 
     at com.ochafik.lang.jnaerator.DeclarationsConverter.convertVariablesDeclaration(DeclarationsConverter.java:1087) 
     at com.ochafik.lang.jnaerator.DeclarationsConverter.convertVariablesDeclaration(DeclarationsConverter.java:1134) 
     at com.ochafik.lang.jnaerator.DeclarationsConverter.convertStruct(DeclarationsConverter.java:873) 
     at com.ochafik.lang.jnaerator.DeclarationsConverter.outputConvertedStruct(DeclarationsConverter.java:950) 
     at com.ochafik.lang.jnaerator.DeclarationsConverter.convertStructs(DeclarationsConverter.java:1055) 
     at com.ochafik.lang.jnaerator.JNAerator.generateLibraryFiles(JNAerator.java:1102) 
     at com.ochafik.lang.jnaerator.JNAerator.jnaerationCore(JNAerator.java:1322) 
     at com.ochafik.lang.jnaerator.JNAerator.jnaerate(JNAerator.java:700) 
     at com.ochafik.lang.jnaerator.JNAerator$1.finished(JNAerator.java:613) 
     at com.ochafik.lang.jnaerator.JNAeratorCommandLineArgs$ArgsParser.parse(JNAeratorCommandLineArgs.java:127) 
     at com.ochafik.lang.jnaerator.JNAerator.main(JNAerator.java:256) 

오전 내가 뭔가 잘못하고?

업데이트

: 나는 [email protected]에 내 질문 (이 스레드를 참조하십시오 https://jna.dev.java.net/servlets/BrowseList?list=users&by=thread&from=2312620를) 게시 올리비에 Chafik의 JNAerator 프로젝트 소유자로부터 응답을 받았다. 요약 :

업데이트 # 2 : TestLibrary.java의 부족을 실현 한 후 올리비에 responded again은 아니다 기본적으로 생성 된 Test.jar 파일에 포함되어 있기 때문에 버그입니다.

답변

0

글쎄, 당신은 이미 문제를 알아 냈습니다. 버전 문제.

JAR의 클래스가 JRE 자체의 최신 버전을 가지고 있기 때문에 JRE가 JAR의 클래스를 실행하는 방법을 알지 못한다는 메시지가 표시됩니다.

jar 파일이 java 1.6.x로 컴파일되었을 수 있습니다. 따라서 JRE 버전을 실행하려고하면 JRE 버전이 UnsupportedClassVersionError: Bad version number이고 JRE 버전은 컴파일 된 곳의 소스 버전입니다. 그리고 JRE 1.5에서는 jar 파일의 새로운 클래스 파일 버전을 읽을 수 없습니다.

Java 1.6.0_15로 전환하면 jar 파일이 컴파일 된 JDK의 주요 Java 버전과 jar를 실행하는 데 사용 된 JRE 버전이 동일하며 (1.6.x) 정상적으로 실행됩니다.

+0

저는 문제 *를 직접 알아 냈습니다. Java 1.6.0_15로 전환 한 후 JNAeration이 실패했습니다 (NullPointerException 사용). 나는 왜 누군가가 그 이유를 알고 있기를 바라고 있습니다. –

+0

죄송합니다. 그것을 놓쳤습니다. 실제로 두 번째 출력 붙여 넣기 전체를 ​​읽는 것만 건너 뛰었습니다. 정상적으로 작동하는 것처럼 보였으므로 – jitter