Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/358.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
本机方法的Javah命令给出异常_Java_Java Native Interface_Javah - Fatal编程技术网

本机方法的Javah命令给出异常

本机方法的Javah命令给出异常,java,java-native-interface,javah,Java,Java Native Interface,Javah,我在命令提示符中输入了它,考虑到它在磁盘上的位置和完全限定的类名,我不确定它为什么说它不是有效的类名。Java-version运行正常,我正在使用JDK运行最新版本的JVM,并且类路径配置正确 课程内容如下: package JNI; public class Main { public native void printTitle(); public static void main(String[] args) { Main main = new Main(); mai

我在命令提示符中输入了它,考虑到它在磁盘上的位置和完全限定的类名,我不确定它为什么说它不是有效的类名。Java-version运行正常,我正在使用JDK运行最新版本的JVM,并且类路径配置正确

课程内容如下:

package JNI;

public class Main {

public native void printTitle();

public static void main(String[] args) {
    Main main = new Main();
    main.print();
}

public void print(){
    System.out.println("The print subroutine has finished.");
}
命令行参数是:

C:\Users\USER\Documents\NetBeansProjects\JNI Test Project\build\classes\JNI>javah -jni -classpath "C:\Users\USER\Documents\NetBeansProjects\JNI Test Project\build\classes\JNI" JNI.Main.class
Exception in thread "main" java.lang.IllegalArgumentException: Not a valid class name: JNI.Main.class
    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.JavahTask.run(JavahTask.java:509)
    at com.sun.tools.javah.JavahTask.run(JavahTask.java:335)
    at com.sun.tools.javah.Main.main(Main.java:46)

classpath
应该指向顶级包(JNI)所在的根文件夹,而不是类实际所在的文件夹

类名不应包括
.Class
扩展名

可以把它看作是在类上操作,而不是在物理文件上操作

javah-jni-classpath“C:\Users\GETH COMMANDER\Documents\NetBeansProjects\jni测试项目\build\classes”jni.Main


此外,您还应该遵循Java命名约定,并将包名的大小写改为小写。

对于关闭此线程的原因感到困惑,我是“未来的访问者”,我从该线程获得了帮助^_^浏览10594次,请打开此问题!我在javah-jni-classpath“\home\npsdk\niagara\u dev\u home\sampl es\npsdkJni\npsdkJni rt\src\”-d“\home\npsdk\niagara\u dev\u home\samples\npsdkJni\npsdkJni rt\src\native\npsdk\include\jni\”com.tridium.nre.NreLinuxNpsdk0错误:找不到“com.tridium.nre.NreLinuxNpsdk0”的类文件。