java.lang.IllegalArgumentException: Não é um nome de classe válido: ANDROID NDK javah

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

Estou aprendendo a codificar Android no NDK no WINDOWS Eclipse .... seguindo um Livro de Tutoriais de Sylvain Ratabouil. Então estou em Run | Ferramentas Externas | Configurações de ferramentas externas… criando uma nova configuração de programa.

Name: MyProject javah

Localização: $ {env_var: JAVA_HOME} \ bin \ javah.exe

Diretório de trabalho: $ {workspace_loc: / MyProject / bin}

O problema vem em argumentos ... quando eu tento Argumentos: -d $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity como diz no livro

eu recebo quando clico em executar

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

quando eu tento $ {workspace_loc: / MyProject / jni} com.myproject.MyActivity}

eu recebo

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

UPDATE: eu coloquei -classpath primeiro e está em execução, mas não consigo encontrar o arquivo de classe para com.myproject

1 Comments
Guilherme 08/31/2014
Engraçado, isso não funcionou para mim. Estou no mac. Isso resolveu stackoverflow.com/questions/9200373/…

6 Answers


Paul Asiimwe 07/13/2013.

depois de mais pesquisas .... eu fiz isso.

Eu defino argumentos para

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


Julian 07/22/2014.

Eu também gasto muito tempo com esse problema ao trabalhar com o livro mencionado sobre o Android NDK.

Observe o seguinte: O nome da classe java NÃO está escrito em { } , apenas escreva algo como com.myproject.MyActivity

O parâmetro -classpath pode receber vários caminhos separados por ponto-e-vírgula.

No meu caso, esses parâmetros funcionaram:

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 .: O arquivo Adroid.jar correto é referenciado dentro do projeto Eclipse).


community wiki 12/20/2014.

Eu também enfrentando o mesmo problema hoje à noite, eu encontrei uma maneira menos tediosa como seguir ...

  1. como "Location" definir o javah do seu sistema
  2. como "Working Directory" define o diretório bin / classes do projeto ( $NO )
  3. como "Argument" defina a pasta jni como o diretório de saída e aponte a classe na qual você deseja executar o javah ( -d "$ {workspace_loc: / HelloWorld / jni}" com.example.helloworld.MainActivity )

NB :: Não esqueça o qoute duplo (") em torno da saída na terceira etapa ( "$NO )

Uma imagem completa também é anexada após

Todas as 3 etapas em uma única foto


Saket 06/29/2014.

bem no caso ...

1-> Ir para (cd C: \ Arquivos de programas \ Java \ jdk1.7.0_60 \ bin)

2-> C: \ Arquivos de programas \ 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

sem criar / usar variável de ambiente ...


CoDe 08/12/2015.

A seguir eu tentei com sucesso

javah com.sense.kios.Calculation 

Note: Include package name.

No caso, se javah não for encontrado como um comando e você está recebendo

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  

use o caminho direto do caminho jdk, no meu caso é /usr/lib/jvm/jdk1.8.0/bin/javah .


Dhiraj Himani 07/29/2017.

SIM que está correto mais abstrato seria

-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