Java 如何执行Quickfix/J jar?

Java 如何执行Quickfix/J jar?,java,maven,intellij-idea,quickfix,quickfixj,Java,Maven,Intellij Idea,Quickfix,Quickfixj,我正在使用quickfix/j库构建一个独立的交易模拟器。直到现在,我一直在使用mvn包,然后使用intelli J“Run button”从客户端应用程序类中的入口点运行我的程序。我尝试使用java-jar目标/…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.l

我正在使用quickfix/j库构建一个独立的交易模拟器。直到现在,我一直在使用mvn包,然后使用intelli J“Run button”从客户端应用程序类中的入口点运行我的程序。我尝试使用
java-jar目标/…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示例中,在主Cals中使用Intellli J“Run”按钮也能很好地工作。据我所知,IntelliJ使用的命令是这样的
“/path/to/java/”-javagent/...jar”“/pathtolocalmavenrepo/quickfix-core.jar”/pathtolocalmavenrepo/anotherquickfixdependecy.jar“…“更多的quickfix依赖项jar文件”packagestructure.Main


我不明白为什么这会起作用,但我的执行不会。如果这有帮助的话,我可以包括我的pom文件和其他信息。我也在使用一个多模块maven项目,但这似乎没有问题。

结果证明我是一个noob。maven包生命周期将没有依赖项的指定类文件捆绑到一个jar中。我需要d创建一个包含所有必需的bianries的uber jar,然后运行它。参见SO问题

所需内容如下:

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

其中,
是一个;(Windows)或:(*nix)运行程序所需的所有jar(quickfixj jar、您自己的jar和任何需要的jar)的分隔列表,
是主类(具有应用程序主项的类)的完全限定类名

当您从Intellij运行时,这是可行的,因为IDE在类路径中包含所有必要的jar-s。为了使用
java-jar..
选项从命令行运行,一种方法是创建一个“uber-jar”“打包所有必要的二进制文件;请参阅需要将quickfixj JAR包含到类路径中的SO问题:
java-classpath
。其中
是一个;(Windows)或:(*nix)运行程序所需的所有jar(quickfixj jar、您自己的jar和任何需要的jar)的单独列表,
是主类(应用程序的主条目所在的类)的完全限定类名。@Daniele谢谢。我听从了你的回答,结果成功了!我原以为我认识马文,但后来发现我是个笨蛋@ChristophJohn感谢我没有正确查看pom,否则我会意识到独立jar是我需要运行的。我还想说谢谢,我问了其他问题,你帮了我很大的忙。@TT谢谢。你的解释非常清楚。我希望你不介意,我在回答中引用了你的评论。