首页 > 解决方案 > 执行时找不到 Jar 类

问题描述

我正在尝试使用 javax.jms 库:https ://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html ,为此我下载了 jar:http://www .java2s.com/Code/Jar/j/Downloadjavaxjms111sourcesjar.htm

具体来说,我正在尝试使用基于 Jar 反编译的 MessageListener 和 Message 类。我把这个 jar 文件放在我的 java 文件旁边,所以文件结构如下所示:

myDir
    -|jms.jar
    -|Main.java

主.java:

import javax.jms.MessageListener;
import javax.jms.Message;

public class Main {
    public static void main(String[] args) {
        MessageListener listener = new MessageListener() {
            @Override
            public void onMessage(Message msg) {
              
            }
        };
        System.out.println("Hello World");
    }
}

我可以使用 myDir 内部的 javac -cp jms.jar Main.java 编译它。这将创建 Main.class。但是,当我运行 java Main 时,我得到:

Exception in thread "main" java.lang.NoClassDefFoundError: javax/jms/MessageListener

这会让我相信 MessageListener 不包含在 jar 中,但它是并且文件结构是 javax/jms/MessageListener 检出的。我犯了什么愚蠢的错误?

当我在没有 -cp js 的情况下编译时,它失败了,说:

error: package javax.jms does not exist

因此,至少编译器正在查看 jar。

标签: javajarjms

解决方案


我犯了2个错误

1:归功于@NormR,.:jms.jar(或 .; 对于我推测的 Windows) 2:在执行时链接 jar。因此,命令应该是:

javac -cp .:jms.jar Main.java
java -cp .:jms.jar Main

推荐阅读