JNI类如果不添加包头,可以用Javah编译过去,但普通Java文件访问JNI类就会出现有包类访问无包类的问题。package com.test.java;import Sample1; //JNI 错误:The import Sample1 cannot be resolved
JNI类如果添加包头,就无法用Javah编译过去。D:\JavaWorkspace\JNITest>javah com.test.java.Sample1
错误:无法访问 com.test.java.Sample1
未找到 com.test.java.Sample1 的类文件
javadoc: 错误 - 找不到类 com.test.java.Sample1。
Error: 未在命令行中指定任何类。请尝试使用 -help。D:\JavaWorkspace\JNITest>javah com.test.java.Sample1.class
错误:无法访问 com.test.java.Sample1.class
未找到 com.test.java.Sample1.class 的类文件
javadoc: 错误 - 找不到类 com.test.java.Sample1.class。
Error: 未在命令行中指定任何类。请尝试使用 -helpD:\JavaWorkspace\JNITest>javah -classpath com\test\java Sample1
错误:无法访问 Sample1
错误的类文件: com\test\java\Sample1.class
类文件包含错误的类: com.test.java.Sample1
请删除该文件或确保该文件位于正确的类路径子目录中。
com.sun.tools.javac.util.Abort
at com.sun.tools.javac.comp.Check.completionError(Check.java:164)
at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149)
at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:77)
at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:15
)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330)
at com.sun.tools.javadoc.Start.begin(Start.java:128)
at com.sun.tools.javadoc.Main.execute(Main.java:66)
at com.sun.tools.javah.Main.main(Main.java:147)
javadoc: 错误 - 致命错误
2 错误各位高手,能否帮我看看怎么回事。
JNI类如果添加包头,就无法用Javah编译过去。D:\JavaWorkspace\JNITest>javah com.test.java.Sample1
错误:无法访问 com.test.java.Sample1
未找到 com.test.java.Sample1 的类文件
javadoc: 错误 - 找不到类 com.test.java.Sample1。
Error: 未在命令行中指定任何类。请尝试使用 -help。D:\JavaWorkspace\JNITest>javah com.test.java.Sample1.class
错误:无法访问 com.test.java.Sample1.class
未找到 com.test.java.Sample1.class 的类文件
javadoc: 错误 - 找不到类 com.test.java.Sample1.class。
Error: 未在命令行中指定任何类。请尝试使用 -helpD:\JavaWorkspace\JNITest>javah -classpath com\test\java Sample1
错误:无法访问 Sample1
错误的类文件: com\test\java\Sample1.class
类文件包含错误的类: com.test.java.Sample1
请删除该文件或确保该文件位于正确的类路径子目录中。
com.sun.tools.javac.util.Abort
at com.sun.tools.javac.comp.Check.completionError(Check.java:164)
at com.sun.tools.javadoc.DocEnv.loadClass(DocEnv.java:149)
at com.sun.tools.javadoc.RootDocImpl.<init>(RootDocImpl.java:77)
at com.sun.tools.javadoc.JavadocTool.getRootDocImpl(JavadocTool.java:15
)
at com.sun.tools.javadoc.Start.parseAndExecute(Start.java:330)
at com.sun.tools.javadoc.Start.begin(Start.java:128)
at com.sun.tools.javadoc.Main.execute(Main.java:66)
at com.sun.tools.javah.Main.main(Main.java:147)
javadoc: 错误 - 致命错误
2 错误各位高手,能否帮我看看怎么回事。
解决方案 »
- java连接数据库,通过servicename而不是sid
- 动态显示JFRAME中ContentPane中的内容--后续问题
- swt运行时的界面和在design中看到的不一样
- Struct格式保存的东东,用JAVA怎么处理
- java调用外部exe文件的问题
- 请教,用java swing实现像word中的分页效果
- "This" cannot be referenced from a staic context at line 26
- 小问题:在线等!!!
- 在serversock中,接受用字节流接受一个汉字,字节流动长度为3,为何不是2?如何获取正确的长度?
- 简单问题,如何将Date格式转换成年月日时分秒的格式?
- 关于javamail问题,困惑多天了,抛出AuthenticationFailedException异常,请高手指正
- Exception in thread "main" java.lang.NoClassDefFoundError: com/adventnet/afp/log/AbstractLogger
然后执行javah com.test.java.Sample1不就行了?
用命令:
d:\JavaWorkspace\JNITest>javah com.test.java.Sample1
错误:无法访问 com.test.java.Sample1
未找到 com.test.java.Sample1 的类文件
javadoc: 错误 - 找不到类 com.test.java.Sample1。
Error: 未在命令行中指定任何类。请尝试使用 -help。1、2、3楼,帮忙看看!谢谢!
public class Sample1
{
public native int intMethod(int n);
public native boolean booleanMethod(boolean bool);
public native String stringMethod(String text);
public native int intArrayMethod(int[] intArray);
public static void main(String[] args)
{
System.loadLibrary("Sample1");
Sample1 sample = new Sample1();
int square = sample.intMethod(5);
boolean bool = sample.booleanMethod(true);
String text = sample.stringMethod("JAVA");
int sum = sample.intArrayMethod(
new int[]{1,1,2,3,5,8,13} );
System.out.println("intMethod: " + square);
System.out.println("booleanMethod: " + bool);
System.out.println("stringMethod: " + text);
System.out.println("intArrayMethod: " + sum);
}
}
http://blog.csdn.net/sunyujia/archive/2007/10/19/1833621.aspx
增加了Java_com_test_java_Sample1_ 前缀,注意实现DLL时不要写错。