在我的android项目中对.java文件调用javah时,javah无法找到android类(特别是android.graphics.Bitmap)。
以下是终端输出:
thomas@THOMASDESKLINUX:~$ javah -classpath .:/home/thomas/Documents/LinuxProgramming/EclipseWorkspace/RenderScene/bin org.me.renderscene.Billboard
javadoc: error - In doclet class com.sun.tools.javah.MainDoclet, m
我正在尝试通过命令行生成JNI头文件。当我输入javah myclass.class时,错误是
Exception in thread main java.IllegalArgumentException: not a valid class name
at com.sun.tools.javac.api.JavacTool.getTask<JavacTool.java:177>
at com.sun.tools.javac.api.JavacTool.getTask<JavacTool.java:68>
at com.sun.tools.javah.api.Javac
我尝试用eclispe设置超级简单的exteranl工具,也就是javah,无论我做什么,这意味着尝试web上的所有链接仍然可以正确地设置它。当我关闭外部工具配置时,它会给出错误
我尝试了使用和不使用-jni仍然给出了错误:
Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: –d
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool.java:177)
at com
我试图用"javah - jni“生成一个C-header,javah.exe返回了一个我从未见过的错误。我之所以使用JNI,是因为我正在使用NDK进行C/C++ android开发。
以下是错误消息:
An exception has occured in the compiler (1.7.0_01).
java.lang.ClassCastException:
com.sun.tools.javac.api.ClientCodeWrapper$WrappedJavaFileManager cannot be cast to
com.sun.tools.javac.file.Ja
现在,我只是使用JNI创建一个简单的程序来处理和学习。我认为使用Ant来构建会让它变得容易得多。以下是我的项目结构:
src/pkg/Test.java
bin/pkg/Test.class
c/
build.xml
Test.java:
package pkg;
public class Test {
public static void main(String[] args) {
System.out.println(new Test().getInt());
}
public native int getInt();
}
build.xml
我有一个C makefile,它从java代码生成头文件,并编译非常简单的C可执行文件。有一个我找不到的错误。当我尝试运行代码时,我得到了UnsatisfiedLinkError。
这是makefile的内容:
#!/usr/bin/make -f
#
# Makefile for native stuff
#
# c files to compile
C_SOURCES := sqrt.c
# the name of the library to build
LIBNAME := sqrt
C_SOURCE_DIR := src
C_GENSOURCE_DIR :=
好的,伙计们,我读过这么多javah用法的例子,但仍然没有得到任何进展。我有Eclipse项目,所以我尝试如下:
cd /path_to_project/
javah -classpath ./bin/classes com.package.ClassName
我得到的是:
class file for android.app.Activity not found
好的,它看到了我的类,我只需要将android.jar添加到类路径中:
javah -classpath ./bin/classes:path_to_sdk/android.jar com.package.ClassName
我得到
当我尝试使用javah生成头文件时,我得到了这个错误:
Error: Could not find class file for 'HelloWorld'.
这是我的外部工具配置。
位置:${system_path:javah}
工作目录:${workspace_loc:/JniJava/bin/sonyraj}
参数:-jni HelloWorld
我尝试使用Javah为我的Android NDK应用程序创建一个.h文件。我正在使用cygwin为我做同样的事情。
将工作空间固定到当前应用程序的bin文件夹中,我执行了以下命令:-
javah -classpath /cygdrive/c/Android/android-sdk/platforms/android.jar myNDK\bin\classes my.first.NDK.MyNDKActivity
但是,它始终给出以下错误:-
error: cannot access myNDKbinclasses
class file for myNDKbinclasses not found
为了在我的应用程序中使用NDK,我在Preferences -> Tools -> External Tools中包含了一个外部工具。
我就是这么做的。
当我右键单击一个类并选择外部javah命令创建一个c类时,它没有工作,并留下了以下消息。
Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: /src/main/jni
at com.sun.tools.javac.api.JavacTool.getTask(JavacTool
当我使用'javah‘用JNI生成头文件时,它显示了
Error: Class org.opencv.core.Mat could not be found.
系统: Mac
使用: Android Studio和opencv 3.1用于android
总司令:
javah -classpath /Users/lumeng/Library/Android/sdk/platforms/android-23/android.jar:. com.lumenghz.test.OpencvHelper
有谁能帮帮我呢?
编辑-1我也尝试过
javah -d ~/Documents/android
命令:
javah -jni JavaHowTo
结果:
error: cannot access JavaHowTo
class file for JavaHowTo not found
javadoc: error - Class JavaHowTo not found.
Error: No classes were specified on the command line. Try -help.
我已经正确地设置了类路径,但是仍然收到这个javah错误。
对此的任何解决方案都将非常有帮助。
我在命令提示符中输入了这段代码,考虑到它在磁盘上的位置和完全限定的类名,我不知道为什么它会说它不是有效的类名。Java版本可以工作,并且我正在使用JDK运行最新版本的JVM,而且CLASSPATH配置正确。
类是这样的:
package JNI;
public class Main {
public native void printTitle();
public static void main(String[] args) {
Main main = new Main();
main.print();
}
public void print(){
Syste
我在使用javah为JNI生成C头文件时遇到了问题。
以下是我在<project-dir>\bin目录中使用的脚本:
javah -classpath C:\PROGRA~2\Android\android-sdk\platforms\android-8\android.jar com.test.JniTest
作为回报,我得到:
ERROR: Could not find class file for 'com.test.JniTest'.
尽管类JniTest肯定是在\com\test中。
我做错了什么?
我正在Eclipse中编写一个简单的演示JNI项目,以集成Java和C代码。我已经为Eclipse安装了CDT插件。使用,我在HelloJNI的‘(默认包)’中包含了HelloJNI java文件,使用makefile生成HelloJNI.hC头文件没有问题。
我的制作文件:
# Define a variable for classpath
CLASS_PATH = ../bin
# Define a virtual path for .class in the bin directory
vpath %.class $(CLASS_PATH)
# $* matches the targ
在用于Mac的JDK1.7中,com.sun.tools.javah.Main的位置从classes.jar移到了tools.jar。因此,maven的maven-antrun-plugin无法找到运行javah任务,并抛出ClassNotFound异常:
Caused by: java.lang.ClassNotFoundException: com.sun.tools.javah.Main
at org.codehaus.plexus.classworlds.strategy.SelfFirstStrategy.loadClass(SelfFirstStrategy.java :50)
a