如何执行Quickfix/J jar?

how to execute Quickfix/J jar?

我正在使用 quickfix/j 库构建一个独立的交易模拟器。直到现在我一直在使用 mvn package,然后是 intelli J "Run button" 到 运行 我的程序从我的客户端应用程序 class 中的入口点。我尝试使用 java -jar target/.....1.1.0.jar 。并得到以下错误

java -jar Broker/target/Broker-1.0.0.jar
Error: Could not find or load main class Broker.ClientApplication
Caused by: java.lang.NoClassDefFoundError: quickfix/Application

我认为这个错误可能与我的 pom 文件没有正确获取依赖项有关。因此,为了确保我 运行 来自 quickfix/J github 的 ordermatch 示例,但我得到了类似的错误。

java -jar /homes/antonga/IdeaProjects/Desktop/quickfixj-parent/quickfixj-examples/ordermatch/target/quickfixj-examples-ordermatch-2.1.1-sources.jar

no main manifest attribute, in /homes/antonga/IdeaProjects/Desktop/quickfixj-parent/quickfixj-examples/ordermatch/target/quickfixj-examples-ordermatch-2.1.1-sources.jar

需要说明的是,即使对于 ordermacth 示例,在主类中使用 Intellli J "Run" 按钮也能完美工作。据我所知,IntelliJ 使用的命令是这样的 "/path/to/java/" "-javagent/.../.jar" "/pathtolocalmavenrepo/quickfix-core.jar "/pathtolocalmavenrepo/anotherquickfixdependecy.jar" ....."more quickfix dependency jar files" packagestructure.Main

我不明白为什么这行得通,但我的执行行不通。如果这有帮助,我可以包括我的 pom 文件和其他信息。我也在使用多模块 Maven 项目,但这似乎不是问题。

原来我是个菜鸟。 Maven 包生命周期将没有依赖项的指定 class 文件捆绑到一个 jar 中。我需要创建一个包含所有必要二进制文件的 uber jar,然后 运行 那个。请参阅 SO 问题 create excecutable jar with dependencies using maven

需要的是以下内容:

java -classpath <list-of-all-jars> <main-class>

其中 <list-of-all-jars> 是一个 ; (Windows) 或 : (*nix) 运行 你的程序所需的所有 jar 的分隔列表(quickfixj jar,你自己的 jar 和任何需要的 jar),<main-class> 是完全合格的class 您的主要 class 的名称(class 是您应用程序的主要入口)