一、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”注:这两个文件在同一目录下
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”注:这两个文件在同一目录下
cd 到这个目录下全部编译
javac *.java
CMD中执行:javac Cdll.java,能正常的生成Cdll.class文件
在当前文件夹是会生成!
当再执行
javac MainClass.java时,因为你MainClass中调用了Cdll类
程序会去Liberary包下去找Cdll类,但是找不到!
解决的方法就是新建个Liberary文件夹把Cdll.class放进去再
执行javac MainClass.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下面去。
public native String fstring(String s);
在编译Test类的时候,会在当前目录下创建Test类中声明要创建的包,并把.calss文件保存到创建的包中。