Dar*_*zer 4 java noclassdeffounderror jna
我可以编译这个JNA示例代码(来自https://github.com/twall/jna/#getting_started的第2步):
package com.sun.jna.examples;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
/** Simple example of JNA interface mapping and usage. */
public class HelloWorld {
// This is the standard, stable way of mapping, which supports extensive
// customization and mapping of Java to native types.
public interface CLibrary extends Library {
CLibrary INSTANCE = (CLibrary)
Native.loadLibrary((Platform.isWindows() ? "msvcrt" : "c"),
CLibrary.class);
void printf(String format, Object... args);
}
public static void main(String[] args) {
CLibrary.INSTANCE.printf("Hello, World\n");
for (int i=0;i < args.length;i++) {
CLibrary.INSTANCE.printf("Argument %d: %s\n", i, args[i]);
}
}
}
Run Code Online (Sandbox Code Playgroud)
......使用javac -classpath .:jna.jar -g HelloWorld.java没有错误.(我现在下载了jna.jar并将它放在与HelloWorld.java相同的目录中.)
但是当我使用它时java -classpath .:jna.jar HelloWorld,我得到:
Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorld (wrong name: com/sun/jna/examples/HelloWorld)
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:620)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:124)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:260)
at java.net.URLClassLoader.access$100(URLClassLoader.java:56)
at java.net.URLClassLoader$1.run(URLClassLoader.java:195)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:188)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:268)
at java.lang.ClassLoader.loadClass(ClassLoader.java:251)
at java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319)
Run Code Online (Sandbox Code Playgroud)
我在Mac OS X和Linux上得到完全相同的例外.
我如何让它运行?
这个例子(以及绝大多数java类)使用包:
package com.sun.jna.examples;
Run Code Online (Sandbox Code Playgroud)
为了正确编译/运行它,你需要从"root"文件夹运行javac/java(例如"com"所在的文件夹):
假设您有一个名为的文件夹examples.您将其中的jna.jar源代码和源代码都保存在文件夹结构中:
/examples
jna.jar
/com
/sun
/jna
/examples
HelloWorld.java
Run Code Online (Sandbox Code Playgroud)
您编译并运行使用:
javac -classpath .:jna.jar -g com/sun/jna/examples/HelloWorld.java
java -classpath .:jna.jar com.sun.jna.examples.HelloWorld
Run Code Online (Sandbox Code Playgroud)
注意前一种情况下的路径分隔符和后一种情况中的点.
| 归档时间: |
|
| 查看次数: |
32174 次 |
| 最近记录: |