java.lang.IllegalArgumentException: Không phải là tên lớp hợp lệ: ANDROID NDK javah

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

Im học cách mã hóa Android trong NDK trên WINDOWS Eclipse .... đã theo một cuốn sách hướng dẫn của Sylvain Ratabouil. Vì vậy, im trong Run | Công cụ bên ngoài | Cấu hình công cụ bên ngoài ... tạo cấu hình chương trình mới.

Name: MyProject javah

Vị trí: $ {env_var: JAVA_HOME} \ bin \ javah.exe

Thư mục làm việc: $ {workspace_loc: / MyProject / bin}

Vấn đề xuất hiện Trong các đối số ... khi tôi thử các đối số: –d $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity như đã nói trong sách

tôi nhận được khi tôi nhấp vào chạy

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

khi tôi thử $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity}

tôi có

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

CẬP NHẬT: tôi đặt -classpath đầu tiên và nó đang chạy nhưng không thể tìm thấy tệp lớp cho com.myproject

1 Comments
Guilherme 31/08/2014
Buồn cười, điều này không hiệu quả với tôi. Tôi đang ở mac. Điều này đã giải quyết stackoverflow.com/questions/9200373/…

6 Answers


Paul Asiimwe 13/07/2013.

sau khi nghiên cứu thêm .... tôi đã làm nó.

tôi đặt đối số cho

-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 22/07/2014.

Tôi cũng dành một số thời gian dài về vấn đề này khi làm việc với cuốn sách được đề cập về NDK của Android.

Xin lưu ý những điều sau đây: Tên lớp java KHÔNG được viết bằng { } , chỉ cần viết một cái gì đó như com.myproject.MyActivity

Tham số -classpath có thể nhận được một số đường dẫn được phân tách bằng dấu chấm phẩy.

Trong trường hợp của tôi, các tham số này hoạt động:

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: Tệp Adroid.jar chính xác được tham chiếu bên trong dự án Eclipse.)


community wiki 20/12/2014.

Tôi cũng phải đối mặt với cùng một vấn đề tối nay, tôi tìm thấy một cách ít tẻ nhạt như sau ...

  1. là "Vị trí" đặt javah từ hệ thống của bạn
  2. "Thư mục làm việc" đặt thư mục bin / classes của dự án ( $NO )
  3. "Argument" đặt thư mục jni làm thư mục đầu ra và chỉ ra lớp mà bạn muốn chạy javah ( -d "$ {workspace_loc: / HelloWorld / jni}" com.example.helloworld.MainActivity )

NB :: Đừng quên qoute đôi (") xung quanh đầu ra ở bước thứ ba ( "$NO )

Một bức tranh đầy đủ cũng được đính kèm sau

Tất cả 3 bước trong một hình ảnh


Saket 29/06/2014.

tốt trong trường hợp ...

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

2-> 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

mà không tạo / sử dụng biến môi trường ...


CoDe 12/08/2015.

Theo tôi đã thử thành công

javah com.sense.kios.Calculation 

Note: Include package name.

Trong trường hợp nếu javah không được tìm thấy như một lệnh và bạn nhận được

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  

sử dụng đường dẫn trực tiếp của đường dẫn jdk, trong trường hợp của tôi là /usr/lib/jvm/jdk1.8.0/bin/javah .


Dhiraj Himani 29/07/2017.

CÓ S COR ĐÚNG trừu tượng hơn sẽ là

-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