java.lang.IllegalArgumentException:不是有效的类名称:ANDROID NDK javah

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

我在WINDOWS Eclipse上学习在NDK中编写Android代码....一直遵循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
有趣的是,这不适合我。 我在Mac。 这解决了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.

在处理上述关于Android NDK的书时,我也花了很长时间解决这个问题。

请注意以下几点:java classname不是写在{ } ,只需写一些像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 

(顺便说一句:在Eclipse项目中引用了正确的Adroid.jar文件。)


community wiki 12/20/2014.

我今晚也面临同样的问题,我发现一个不那么乏味的方式如下...

  1. 作为“位置”从您的系统设置javah
  2. 作为“工作目录”设置项目的bin / classes目录( $NO
  3. 作为“Argument”将jni文件夹设置为输出目录,并指出要运行javah( -d“$ {workspace_loc:/ HelloWorld / jni}” )的类“com.example.helloworld.MainActivity

NB ::不要忘记在第三步输出( "$NO )中输出的double qoute(“) "$NO

下面还附有完整的图片

一张照片中的所有3个步骤


Saket 06/29/2014.

以防万一...

1->转到(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

无需创建/使用环境变量...


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