当前位置: 首页 > 面试题库 >

JNA示例程序java.lang.NoClassDefFoundError

岳风畔
2023-03-14
问题内容

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

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



 类似资料:
  • 编写一个简单的服务器应用程序,向您展示如何将 SPDY 集成到你的下一个应用程序。它只会提供一些静态内容回客户机。这些内容将取决于所使用协议是 HTTPS 或 SPDY 。如果 服务器提供 SPDY 是可以被客户端浏览器所支持,则自动切换到 SPDY 。图12.1显示了应用程序的流程 对于这个应用程序只编写一个服务器组件处理 HTTPS 和 SPDY。为了演示其功能使用两个不同的 web 浏览器,

  • 示例程序 Mininet 代码中带有了大量的示例程序,供大家参考和理解代码。所有的示例程序都在 example 目录下,包括 baresshd.py: 使用 Mininet 的中层 API 来在一个 namespace 中创建主机、链路,并在主机上启动 sshd 进程,让用户可以登录。并未使用 OpenFlow。 consoles.py: 为每一个节点都创建一些 console 窗口,并允许用户对

  • 提供内核、文件系统、网络和外设的使用例程 模块   内核例程   内核接口的使用例程。     文件系统例程   文件系统接口的使用例程     网络例程   网络接口的使用例程     外设例程   外设接口的使用例程   详细描述 提供内核、文件系统、网络和外设的使用例程

  • 本手册详细介绍了使用 beego 框架开发的示例应用程序,旨在帮助您更好的学习和理解 beego。 在线聊天 该示例通过使用 beego 来构建一个在线聊天应用向您展示如何结合 WebSocket 来开发应用程序。 到 GitHub 上浏览代码 短域名 API 服务 短域名 API 服务可以帮助你理解如何通过 beego 来开发高性能的 API 服务。 到 GitHub 上浏览代码 Todo 列表

  • 为了说明实时功能的特点,我们使用 WebSocket 协议来实现一个基于浏览器的实时聊天程序,就像你在 Facebook 中用文字聊天一样。但是我们这里要更进一步,我们要让不同的用户可以同时互相交谈。 程序逻辑如图 11.1 所示 #1客户端/用户连接到服务器,并且是聊天的一部分 #2聊天消息通过 WebSocket 进行交换 #3消息双向发送 #4服务器处理所有的客户端/用户 逻辑很简单: 1.

  • Keras示例程序 addition_rnn.py: 序列到序列学习, 实现两个数的加法 antirectifier.py: 展示了如何在Keras中定制自己的层 babi_memnn.py: 在bAbI数据集上训练一个记忆网络,用于阅读理解 babi_rnn.py: 在bAbI数据集上训练一个循环网络,用于阅读理解 cifar10_cnn.py: 在CIFAR10数据集上训练一个简单的深度CNN