java.lang.IllegalArgumentException : 유효한 클래스 이름이 아닙니다. ANDROID NDK javah

Paul Asiimwe 08/22/2017. 6 answers, 9.039 views
android-ndk android-ndk jni adt

윈도우즈 이클립스의 NDK에서 안드로이드를 코딩하는 법을 배우는 중 ... 실뱅 라따 보이 (Sylvain Ratabouil)의 튜토리얼 북을 따라 왔습니다. 그래서 실행 | 외부 도구 | 외부 도구 구성 ... 새 프로그램 구성 만들기.

Name: MyProject javah

위치 : $ {env_var : JAVA_HOME} \ bin \ javah.exe

작업 디렉토리 : $ {workspace_loc : / MyProject / bin}

문제는 인수에서 온다. 인수를 시도 할 때 : 책에서 말하는대로 -d $ {workspace_loc : / MyProject / jni} com.myproject.MyActivity

나는 실행을 클릭 할 때 얻는다.

Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: –d 

내가 $ {workspace_loc : / MyProject / jni} com.myproject.MyActivity}을 시도하면,

나는 얻다

Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: C:\Paul\Workspace\MyProject\jni 

업데이트 : 나는 먼저 -classpath 넣고 실행 중이지만 com.myproject 클래스 파일을 찾을 수 없습니다.

1 Comments
Guilherme 08/31/2014
재밌네, 이건 나 한테는 효과가 없어. 나는 맥에있어. 이 해결 된 stackoverflow.com/questions/9200373/...

6 Answers


Paul Asiimwe 07/13/2013.

추가 연구가 끝나면 .... 내가 해냈어.

나는 인수를 설정했다.

-d $ {workspace_loc : / MyProject / jni} -classpath C : \ Paul \ android-sdk-windows \ platforms \ android-17 \ android.jar; $ {workspace_loc : / MyProject / bin / classes} com.myproject.MainActivity


Julian 07/22/2014.

또한 안드로이드 NDK에 대한 언급 된 책을 가지고 작업 할 때이 문제에 대해 오랜 시간을 보냅니다.

다음을주의하십시오 : java 클래스 이름은 { } 쓰여져 있지 않습니다. com.myproject.MyActivity 와 같은 것을 com.myproject.MyActivity

-classpath 매개 변수는 세미콜론으로 구분 된 여러 경로를 수신 할 수 있습니다.

내 경우에는이 매개 변수가 작동했습니다.

Location:

$NO 

Working Directory:

$NO 

Arguments:

-d ${workspace_loc:/myproject/jni} -classpath ${workspace_loc:/myproject/bin/classes};"C:\Eclipse\sdk\platforms\android-18\android.jar" com.myproject.MyActivity 

(BTW : 올바른 Adroid.jar 파일은 Eclipse 프로젝트 내에서 참조됩니다.)


community wiki 12/20/2014.

나도 오늘 밤 똑같은 문제에 직면했다. 나는 다음과 같이 덜 지루한 길을 발견했다.

  1. 「위치」로서 시스템으로부터 javah를 설정합니다.
  2. "Working directory"는 프로젝트의 bin / classes 디렉토리를 설정합니다 ( $NO ).
  3. "Argument"로 jni 폴더를 출력 디렉토리로 설정하고 javah ( -d "$ {workspace_loc : / HelloWorld / jni}"com.example.helloworld.MainActivity )를 실행할 클래스를 지정합니다 .

주의 사항 : 세 번째 단계 ( "$NO )에서 출력 주위에 이중 qoute ( ")를 잊지 마십시오 "$NO

전체 사진도 다음과 같이 첨부됩니다.

단일 사진의 모든 3 단계


Saket 06/29/2014.

그럼 ...

1-> Goto (cd C : \ Program Files \ Java \ jdk1.7.0_60 \ bin)

C : \ Program Files \ Java \ jdk1.7.0_60 \ bin> javah -jni -classpath F : \ Android_OpenGLES \ FibonacciNative \ bin \ classes -d F : \ Android_OpenGLES \ FibonacciNative \ jni \ com.example.fibonaccinative. FibLib

환경 변수를 생성하거나 사용하지 않고 ...


CoDe 08/12/2015.

나는 성공적으로 시험을 보았다.

javah com.sense.kios.Calculation 

Note: Include package name.

javah를 명령으로 찾을 수없는 경우

The program 'javah' can be found in the following packages:
 * gcj-4.6-jdk
 * gcj-4.7-jdk
 * openjdk-7-jdk
 * openjdk-6-jdk
Try: sudo apt-get install  

jdk 경로의 직접 경로를 사용하십시오. 제 경우에는 /usr/lib/jvm/jdk1.8.0/bin/javah 입니다.


Dhiraj Himani 07/29/2017.

그게 맞다면 더 추상적 일 것입니다.

-d ${workspace_loc:/MyProject/jni} -classpath ${env_var:ANDROID_SDK_HOME}\platforms\android-16\android.jar;${workspace_loc:/MyProject/bin/classes} com.myproject.MyActivity 

Related questions

Hot questions

Language

Popular Tags