JNA示例程序java.lang.NoClassDefFoundError

我可以编译以下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]);

}

}

}

…正确使用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)

在Mac OS X和Linux上,我得到完全相同的例外。

我如何运行它?

回答:

此示例(以及绝大多数Java类)使用包:

package com.sun.jna.examples;

为了正确地编译/运行它,您需要从“根”文件夹(例如,“ com”所在的文件夹)中运行javac / java:

假设您有一个名为的文件夹examples。您需要将jna.jar和源代码都放在其中,以 :

/examples

jna.jar

/com

/sun

/jna

/examples

HelloWorld.java

您使用以下命令进行编译和运行:

javac -classpath .:jna.jar -g com/sun/jna/examples/HelloWorld.java

java -classpath .:jna.jar com.sun.jna.examples.HelloWorld

请注意,在前一种情况下为路径分隔符,在后一种情况下为点。

以上是 JNA示例程序java.lang.NoClassDefFoundError 的全部内容, 来源链接: utcz.com/qa/418907.html

回到顶部