7

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

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

4

6 回答 6

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

于 2013-07-13T16:12:33.283 回答
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 文件。)

于 2014-07-22T19:11:49.023 回答
1

今晚我也面临同样的问题,我找到了一种不那么乏味的方法,如下所示......

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

NB :: 不要忘记第三步中输出周围的双引号(“)(“${workspace_loc:/HelloWorld/jni}”

下面还附上一张全图

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

于 2014-12-20T15:46:54.280 回答
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
于 2014-08-19T17:27:51.340 回答
0

万一……

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

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

于 2014-06-29T07:22:35.637 回答
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.

于 2015-08-12T10:17:56.933 回答