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

时间:2013-07-13 14:31:36

标签: android-ndk java-native-interface adt

我正在学习在WINDOWS Eclipse上用NDK编写Android代码....一直在关注Sylvain Ratabouil的教程书。所以我在Run |外部工具|外部工具配置...... 创建一个新的程序配置。

名称: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的类文件

6 个答案:

答案 0 :(得分:5)

经过进一步研究...... 我做到了。

我将参数设置为

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

答案 1 :(得分:1)

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

请注意以下事项: java类名不是用{ }编写的,只是写com.myproject.MyActivity

之类的东西

-classpath参数可以接收以分号分隔的多个路径。

在我的情况下,这些参数有效:

位置:

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

工作目录:

${workspace_loc:/myproject/bin}

<强>参数:

-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文件。)

答案 2 :(得分:1)

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

  1. as&#34; Location&#34;从系统中设置javah
  2. as&#34;工作目录&#34;设置项目的bin / classes目录( $ {workspace_loc:/ HelloWorld / bin / classes}
  3. as&#34; Argument&#34;将jni文件夹设置为输出目录,并指出要运行javah的类( -d&#34; $ {workspace_loc:/ HelloWorld / jni}&#34; com.example.helloworld。 MainActivity
  4. NB ::不要忘记第三步输出周围的双qoute(&#34;)(&#34; $ {workspace_loc:/ HelloWorld / jni}&#34;

    后面还附有完整的图片

    All 3 steps in a single picture

答案 3 :(得分:0)

以防万一......

1→转到(cd C:\ Program Files \ Java \ jdk1.7.0_60 \ bin)

2→ C:\ Program Files \ Java \ jdk1.7.0_60 \ bin&gt; javah -jni -classpath F:\ Android_OpenGLES \ FibonacciNative \ BIN \班 -d F:\ Android_OpenGLES \ FibonacciNative \ jni \ com.example.fibonaccinative.FibLib

不创建/使用环境变量...

答案 4 :(得分:0)

是的,这是正确的 更抽象的是

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

答案 5 :(得分:0)

我成功尝试后

javah com.sense.kios.Calculation

注意:包含包名称。

如果找不到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 <selected package>

使用jdk路径的直接路径,在我的例子中是/usr/lib/jvm/jdk1.8.0/bin/javah