【发布时间】:2020-06-25 21:40:51
【问题描述】:
我正在尝试使用 javax.jms 库:https://docs.oracle.com/javaee/7/api/javax/jms/package-summary.html,为此我下载了 jar:http://www.java2s.com/Code/Jar/j/Downloadjavaxjms111sourcesjar.htm
具体来说,我正在尝试使用 MessageListener 和 Message 类,我知道它们是基于 Jar 反编译的。我把这个jar文件放在我的java文件旁边,这样文件结构如下:
myDir
-|jms.jar
-|Main.java
Main.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。
【问题讨论】:
-
您是否尝试使用 -cp .;jms.jar 选项,以便 java 程序知道查看 jar 文件?
-
当我添加 .;它不编译 -bash: jms.jar: command not found