F:\>javac f:\yudean\Sky.yudean\src\Sky_interface\SkyJavaAPI.javaF:\>javah f:\yudean\Sky.yudean\src\Sky_interface\SkyJAvaAPI.class
javadoc: 错误 - 非法的软件包名称:"f:\yudean\Sky.yudean\src\Sky_interface\SkyJAv
aAPI.class"
1 错误
怎么用javac编译成功后,用javah就有问题了呢?实现java 设备api调用出现的问题,JNI机制还不熟悉!!!

解决方案 »

  1.   

    如果你是eclipse开发,你在bin目录下可以找到自动生成的.class,利用javah 包名.类名就可以解决了  你出现那个错应该是包名原因
      

  2.   

    用Myeclipse 8.5 ,出现的是这样的错误
    C:\Documents and Settings\Administrator>javah Sky_interface.SkyJavaAPI
    错误:无法访问 Sky_interface.SkyJavaAPI
    未找到 Sky_interface.SkyJavaAPI 的类文件
    javadoc: 错误 - 找不到类 Sky_interface.SkyJavaAPI。
    Error: 未在命令行中指定任何类。请尝试使用 -help。
    是设置系统变量还是用户变量?
      

  3.   


    F:\java>javac SkyJavaAPI.javaF:\java>javah SkyJavaAPI
    错误:无法访问 SkyJavaAPI
    未找到 SkyJavaAPI 的类文件
    javadoc: 错误 - 找不到类 SkyJavaAPI。
    Error: 未在命令行中指定任何类。请尝试使用 -help。
    怎么会找不到类?之前都已经用javac编译成功了的!!!???
      

  4.   

    你可以把代码贴出来让我们看看你的源代码是什么样的 比如你有没有加package之类的
      

  5.   

    有的
    //Java接口
    package Sky_interface;public class SkyJavaAPI
    {
    ---
    }
      

  6.   

    你运行命令有错!javah -classpath f:\yudean\Sky.yudean\bin\ Sky_interface.SkyJAvaAPI
    它是类似java命令的,不是直接指定文件。
      

  7.   


    你指定了 package 但是你在使用javah的时候没有明确写明classpath 而且javah的用法不对 自己参考7L写法吧
      

  8.   

    你的java文件和类明一样吗?这种问题会不会是你的SkyJavaAPI.java文件和里面的类明不一致导致的。你看看。
      

  9.   

    用:
    F:\yudean\Sky.yudean\bin>javah -classpath . -jni SKy_interface.SkyJavaAPI
    F:\yudean\Sky.yudean\bin>dir生成了一个名为Sky_interface.SkyJavaAPI.h的文件,接下来呢?怎么调用DLL?
      

  10.   

    需要做的是设备API的调用,生成了.h文件之后,怎么调用DLL?
      

  11.   

    生成.h之后你应该找VC之类的开发C程序,实现那个.h中的所有方法,并编译成.dll然后在你的Java代码中通过
    static {
    System.loadLibrary("mydllname");
    }这样之后就可以直接调用里面的native方法了