一、Cdll.java
package Liberary;public class Cdll {
     static {
         System.loadLibrary("JavaCall");
     }
     public native void printText(String s);
     public native String fstring(String s);
}
二、MainClass.java
package Liberary;public class MainClass {
     public static void main(String[] args) {
         Cdll jc = new Cdll();
         String j;
        
         j = jc.fstring("无为");
         System.out.println(j);
         jc.printText("测试");
         //System.out.println("\n");
     }
} CMD中执行:javac Cdll.java,能正常的生成Cdll.class文件
CMD中执行:javac MainClass.java,提示“找不到符号 Cdll”注:这两个文件在同一目录下

解决方案 »

  1.   

    最简单做法
    cd 到这个目录下全部编译
    javac *.java
      

  2.   

    xnjnmn 方法是可行的,但为什么按顺序编译就不行呢?
      

  3.   

    你的Cdll类在 Liberary包下!
    CMD中执行:javac Cdll.java,能正常的生成Cdll.class文件 
    在当前文件夹是会生成!
    当再执行
    javac MainClass.java时,因为你MainClass中调用了Cdll类
    程序会去Liberary包下去找Cdll类,但是找不到!
    解决的方法就是新建个Liberary文件夹把Cdll.class放进去再
    执行javac MainClass.java就可以了!
      

  4.   

    Cdll.java
    package Liberary;public class Cdll {
        static {
            System.loadLibrary("JavaCall");
        }
        public native void printText(String s);
        public native String fstring(String s);
    } 首先,如果你先编译了Cdll的话,会在Liberary目录下面生成一个Cdll.class文件,当你在去编译MainClass.java 
    文件的时候,因为有Cdll类,所以编译器会从当前目录下面去找裸体类Cdll,因为Cdll是打包的,所以找不到。
    应当将你编译好的Cdll文件放到/Liberary/Liberary/Cdll.class下面去。
      

  5.   

    建议使用Eclipse  这种问题就不会存在了
      

  6.   

    lz这是什么含义?public native void printText(String s); 
    public native String fstring(String s); 
      

  7.   

    javac -d . 你的类名.java的含义
    在编译Test类的时候,会在当前目录下创建Test类中声明要创建的包,并把.calss文件保存到创建的包中。