【问题标题】:Running multiple Java classes运行多个 Java 类
【发布时间】:2015-02-21 07:58:36
【问题描述】:

我正在尝试运行包含多个 Java 类文件和一个来自我下载的库的 jar 文件的代码。我用以下内容编译它们:

javac -cp "quickfixj-all-.jar" BTCCMarketDataRequest.java Bot.java

Bot 类有 main 方法,而 BTCCMarketDataRequest 文件在类中有很多其他方法。我没有创建任何包。

我应该如何运行它? 如果我做: 爪哇机器人 我得到以下输出:

Exception in thread "main" java.lang.NoClassDefFoundError: quickfix/Group
    at Bot.main(Bot.java:4)
Caused by: java.lang.ClassNotFoundException: quickfix.Group
    at java.net.URLClassLoader$1.run(URLClassLoader.java:217)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:205)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:323)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:294)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:268)
    ... 1 more

编译出来的类(jar文件里的那个找不到,为什么?我编译了。

我是 Java 新手,所以我不知道发生了什么。

谢谢!

【问题讨论】:

    标签: java compilation classpath javac


    【解决方案1】:

    您还需要在执行程序时添加类路径

    java -cp .:quickfixj-all-.jar Bot
    

    这假定Bot 类在默认包中,并且所有jar.class 依赖项都在同一个目录中。

    【讨论】:

    • 谢谢!如果有多个jar文件怎么办?
    • 你必须列出所有的jar文件。为了避免主类通常被捆绑到它自己的 jar 文件中,该文件使用 /META-INF/Manifest.mf 文件列出了它的所有依赖项。
    • 好酷。你如何指定多个jar文件?我用分号或其他东西分隔它们吗?
    • 在 Java 1.6 及更高版本中,您可以在指定类路径时使用通配符。 stackoverflow.com/a/1237107/611819
    • @dnault 感谢您的分享。 Luis,如果你使用的是 Java 6+,你可以试试java -cp .:./* Bot 看看你是否能够引用多个 jars?
    猜你喜欢
    • 2014-11-07
    • 1970-01-01
    • 2012-11-22
    • 2014-06-10
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多