2013-07-13 9 views
6

Uczę się kodowania Androida w NDK na WINDOWS Eclipse .... śledziłem książkę Tutorial autorstwa Sylvaina Ratabouila. Więc im w Run | Narzędzia zewnętrzne | Konfiguracje narzędzi zewnętrznych ... tworzenie nowej konfiguracji programu.java.lang.IllegalArgumentException: Nieprawidłowa nazwa klasy: ANDROID NDK javah

Nazwa: myproject javah

Lokalizacja: $ {env_var: JAVA_HOME} \ bin \ javah.exe

katalog roboczy: $ {workspace_loc:/myproject/bin}

Problem pojawia się w argumentach ... kiedy próbuję Argumenty: -d $ {workspace_loc:/MyProject/jni} com.myproject.MyActivity jak jest napisane w książce

ja dostać po kliknięciu uruchomić

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

gdy próbuję $ {workspace_loc:/myproject/JNI} com.myproject.MyActivity}

otrzymuję

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

UPDATE: kładę -classpath pierwszy i to działa, ale nie może znaleźć pliku klasy dla com.myproject

+0

Zabawne, to nie działa dla mnie. Jestem w mac. Ta rozwiązana http://stackoverflow.com/questions/9200373/ndk-build-eclipse-argument-not-find-class – Guilherme

Odpowiedz

5

po dalszych badaniach ... Zrobiłem to.

mogę ustawić argumentów

-d $ {workspace_loc:/myproject/JNI} -classpath C: \ Paweł \ android-sdk-windows \ platform \ android-17 \ android.jar; $ {workspace_loc :/myproject/bin/classes} com.myproject.MainActivity

0

dobrze w przypadku ...

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 \ -d klas F: \ Android_OpenGLES \ FibonacciNative \ JNI \ com.example.fibonaccinative.FibLib

bez tworzenia/używając zmiennej środowiskowej ...

1

ja również spędzić od dłuższego czasu na ten problem podczas pracy ze wspomnianą książką o Android NDK.

Proszę zwrócić uwagę na następujące: Java classname nie jest napisane w { }, po prostu napisać coś podobnego com.myproject.MyActivity

Parametr -classpath może odbierać różne ścieżki rozdrobnione przez średnikiem.

w moim przypadku parametr ten pracował:

Lokalizacja:

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

katalog roboczy:

${workspace_loc:/myproject/bin} 

argumentami:

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

(BTW .: Poprawny plik Adroid.jar odwołuje się wewnątrz projektu Eclipse.)

0

TAK Zgadza bardziej abstrakcyjne byłoby

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

Ja również stoi ten sam problem dzisiaj, znalazłem mniej żmudny sposób, jak po ...

  1. jako „Location” ustawić javah z systemu
  2. jak ustawić bin/klas projektu "katalog roboczy" ($ {workspace_loc:/HelloWorld/bin/classes})
  3. jako "argument" ustawić folder JNI jako katalog wyjściowy i podkreślić klasę na który chcesz uruchomić javah (-d "$ {workspace_loc:/HelloWorld/JNI}" com.example.helloworld.MainActivity)

NB :: Nie zapomnij podwójnego qoute (") wokół dane wyjściowe w trzecim kroku ("$ {workspace_loc:/HelloWorld/jni}")

pełny obraz jest również dołączone następujące

All 3 steps in a single picture

0

Po Próbowałem powodzeniem

javah com.sense.kios.Calculation 

Uwaga: Dołącz nazwę pakietu.

W przypadku jeśli javah Nie znaleziono jako polecenie i coraz

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 <selected package> 

korzystać bezpośrednio ścieżkę ścieżki jdk, w moim przypadku jest to /usr/lib/jvm/jdk1.8.0/bin/javah.